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
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。 相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右) 另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程); 而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~ 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
页:
[1]