若相依 发表于 2015-1-16 22:48:52

MYSQL教程之静态SQL中DESCRIPTOR的使用

应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?静态
静态SQL中DESCRIPTOR的使用

王光红

静态SQL具有的天真性是尽人皆知的,自己在此先容一种使用DESCRIPTOR的静态SQL:

$shortb_num;
$char*command;

$charSql;
$shortflag;
$dateDate;
$longNumber,b_count,j;
$longprec;
$longtype;
$longscale;
$doublemoney;


sprintf(Sql,"select*fromtable");

$prepareqidfrom$Sql;
if(SQLCODE)return-1;
$declareBROWSEscrollcursorforqid;
if(SQLCODE)return-2;
$allocatedescriptorbrowsdescwithmax:b_num;//在形貌辨别配空间,并设置最年夜的项目数


$getdescriptorbrowsdesc:b_count=count;//失掉查询的字段个数
if(SQLCODE){
SqlErrHandle(SQLCODE,SELECT);
gotoEXIT0;
}

$fetchBROWSEusingsqldescriptorbrowsdesc;
if(SQLCODE){
strcpy(RetPacket.data,"SELECTERROR|");
SqlErrHandle(SQLCODE,SELECT);
gotoEXIT0;
}

for(j=1;j<=b_count;j++){
$getdescriptorbrowsdescvalue$j//以后字段序号
$prec=precision,/*money、decimal*/
$scale=scale,/*money、decimal*/
$type=type;
if(SQLCODE){
SqlErrHandle(SQLCODE,SELECT);
gotoEXIT0;
}
switch(type){
caseSQLFLOAT:
caseSQLSMFLOAT:
caseSQLDECIMAL:
caseSQLMONEY:
if(prec)
sprintf(fmt,"%s%d.%df","%",prec+1,scale);
else
strcpy(fmt,"%f");
$getdescriptorbrowsdescvalue$j
$money=data;
sprintf(result,fmt,money);

if(SQLCODE==DATAISNULL)result=0;
break;
default:
$getdescriptorbrowsdescvalue$j
$result=data;
}//switch

if(SQLCODE==DATAISNULL)SQLCODE=0;

if(SQLCODE){
SqlErrHandle(SQLCODE,SELECT);
gotoEXIT0;
}

OutPut(result);//输入了局

}//for
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。

兰色精灵 发表于 2015-1-17 21:57:59

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

若天明 发表于 2015-1-21 09:35:37

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

变相怪杰 发表于 2015-1-30 13:35:22

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.

仓酷云 发表于 2015-2-6 12:49:41

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

飘飘悠悠 发表于 2015-2-16 03:44:39

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

老尸 发表于 2015-3-4 23:26:22

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)

愤怒的大鸟 发表于 2015-3-11 21:23:55

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

蒙在股里 发表于 2015-3-19 14:08:52

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~

莫相离 发表于 2015-3-28 08:50:23

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
页: [1]
查看完整版本: MYSQL教程之静态SQL中DESCRIPTOR的使用