- 论坛徽章:
- 0
|
我写了一个包含动态SQL的函数,想根据指定条件得到表中符合条件的记录总数,函数如下:
int ut_cnt_tddelaytxntb_setttxn(char* where_buf)
{
EXEC SQL BEGIN DECLARE SECTION;
char query[300];
int host_count;
EXEC SQL END DECLARE SECTION;
host_count=0;
memset(query,0,300);
if( where_buf==NULL)
strcpy(query,"select count(1) from tddelaytxntb " ;
else
sprintf(query,"select count(1) from tddelaytxntb where %s",where_buf);
fprintf(stderr, "query ===============%s\n" , query);
EXEC SQL PREPARE s from :query;
EXEC SQL EXECUTE s INTO :host_count;
fprintf(stderr, "host_count==== %d\n" , host_count);
if( sqlca.sqlcode EQUAL 0 )
{
return host_count;
}
else
{
fprintf(stderr, "ut_cnt_tddelaytxntb_setttxn sqlcode %d\n" , sqlca.sqlcode);
return host_count;
}
}
在程序中调用该函数时,日志显示如下:
query ===============select count(1) from tddelaytxntb where dlytxntype = 15 and dlysettdate <= 20041121
host_count==== 0
但是我在sqlplus中用""查出的结果却是7.
SQL>; select count(1) from tddelaytxntb where dlytxntype = 15 and dlysettdate <= 20041121;
COUNT(1)
----------
7
SQL>;
为什么我的函数取不到结果呢?是我的函数有问题吗?请大侠们帮忙解决,谢谢!!! |
|