sprintf(sqlstr,"select count(*) into :tmpRecord from %s where acno='%s' and trdt between %s and %s;",tabname,sAcno,sBeginDate,sEndDate);
如上述代码,若要保存tmpRecord 是不能实现的,解决办法:
定义动态SQL语句:
sprintf(sqlstr,"select count(*) from %s where acno='%s' and trdt between %s and %s;",tabname,sAcno,sBeginDate,sEndDate);
动态定义游标,并查询记录集,若为单条数据,fetch一次即可。
EXEC SQL PREPARE viewsql from :sqlstr;
EXEC SQL declare cur_count1 CURSOR FOR viewsql;
EXEC SQL OPEN cur_count1;
while(1)
{
EXEC SQL fetch cur_count1 into:tmpRecord;
if ( SQLCODE == SQLNOTFOUND )
break;
}
本文介绍了一种通过动态SQL语句及游标来查询特定记录的方法。具体地,使用sprintf函数构造SQL语句,通过EXEC SQL PREPARE声明准备执行的SQL语句,再利用动态定义的游标进行数据查询。这种方法适用于需要根据运行时参数动态生成SQL查询的情况。
1643

被折叠的 条评论
为什么被折叠?



