<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
动态 SQL中DESCRIPTOR的应用
王光红
动态 SQL具有的灵活性是众所周知的,本人在此介绍一种应用DESCRIPTOR的 动态 SQL:
$shortb_num;
$char*command;
$char SQL[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;
$allocatedescriptor'browsdesc'withmax:b_num; //在描述区分配空间,并设置最大的项目数
$getdescriptor'browsdesc':b_count=count;//得到查询的字段个数
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
$fetchBROWSEusing SQLdescriptor'browsdesc';
if( SQLCODE){
strcpy(RetPacket.data,"SELECTERROR|");
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
for(j=1;j<=b_count;j++){
$getdescriptor'browsdesc'value$j //当前字段序号
$prec=precision, /*money、decimal*/
$scale=scale, /*money、decimal*/
$type=type;
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
switch(type){
case SQLFLOAT:
case SQLSMFLOAT:
case SQLDECIMAL:
case SQLMONEY:
if(prec)
sprintf(fmt,"%s%d.%df/0","%",prec+1,scale);
else
strcpy(fmt,"%f");
$getdescriptor'browsdesc'value$j
$money=data;
sprintf(result,fmt,money);
if( SQLCODE==DATAISNULL)result[0]=0;
break;
default:
$getdescriptor'browsdesc'value$j
$result=data;
}//switch
if( SQLCODE==DATAISNULL) SQLCODE=0;
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
OutPut(result);//输出结果
}//for
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
动态 SQL中DESCRIPTOR的应用
王光红
动态 SQL具有的灵活性是众所周知的,本人在此介绍一种应用DESCRIPTOR的 动态 SQL:
$shortb_num;
$char*command;
$char SQL[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;
$allocatedescriptor'browsdesc'withmax:b_num; //在描述区分配空间,并设置最大的项目数
$getdescriptor'browsdesc':b_count=count;//得到查询的字段个数
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
$fetchBROWSEusing SQLdescriptor'browsdesc';
if( SQLCODE){
strcpy(RetPacket.data,"SELECTERROR|");
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
for(j=1;j<=b_count;j++){
$getdescriptor'browsdesc'value$j //当前字段序号
$prec=precision, /*money、decimal*/
$scale=scale, /*money、decimal*/
$type=type;
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
switch(type){
case SQLFLOAT:
case SQLSMFLOAT:
case SQLDECIMAL:
case SQLMONEY:
if(prec)
sprintf(fmt,"%s%d.%df/0","%",prec+1,scale);
else
strcpy(fmt,"%f");
$getdescriptor'browsdesc'value$j
$money=data;
sprintf(result,fmt,money);
if( SQLCODE==DATAISNULL)result[0]=0;
break;
default:
$getdescriptor'browsdesc'value$j
$result=data;
}//switch
if( SQLCODE==DATAISNULL) SQLCODE=0;
if( SQLCODE){
SQLErrHandle( SQLCODE,SELECT);
gotoEXIT0;
}
OutPut(result);//输出结果
}//for
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>