仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1926|回复: 9

[学习教程] MYSQL教程之静态SQL中DESCRIPTOR的使用

[复制链接]
若相依 该用户已被删除
发表于 2015-1-16 22:48:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

王光红

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

$shortb_num;
$char*command;

$charSql[1024];
$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]=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后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-16 22:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表