hur.cn - 华软网

 热门搜索

请教一个带参数返回的动态sql语句问题

  作者:未知    来源:网络    更新时间:2019/6/11
string ls_sql
long ll_rowcount
 
 ll_rowcount=0
 ls_sql="select count(*) from tablea;"
 DECLARE cur_allrows DYNAMIC CURSOR FOR SQLSA ;
 PREPARE SQLSA FROM :ls_sql using sqlca;
 OPEN DYNAMIC cur_allrows ;
 FETCH cur_allrows INTO :ll_rowcount;
 CLOSE cur_allrows ;
 
请看上面的代码,目的是根据动态sql语句取得每张表的记录数。
在Sql2000里执行能获得正确的ll_rowcount,但在oracle(10g版本)就得不到。
请问有没有解决措施?

------华软网友回答------
在Sql2000里执行能获得正确的ll_rowcount,但在oracle(10g版本)就得不到?
看看他毛病提醒是什么
------华软网友回复------
没用过oracle,但照旧顶上去
------华软网友回复------
debug看每一句执行后的sqlcode
------华软网友回复------
OPEN DYNAMIC cur_allrows ;
这一句之后获得的sqlca.sqlcode为-1,说明执行sql语句失利,但不明白为什么会失利。
------华软网友回复------
看sqlca.sqlerrtext
------华软网友回复------
问题已解决,谢谢 AFLC !虽然是个很简单的提醒,但就是我平常容易忽略的,其实看看sqlerrtext虽然不能直接找到毛病,但至少大大缩小了查找毛病的范围。
毛病很简单就是下面这句:
ls_sql="select count(*) from tablea;"
注意最后那个“;”号,在oracle以为它是多了的,会造成语法毛病,去掉就能够了。但sql2000和sybase等数据库不会以为是毛病。
这个问题再次说明了日常平凡咱们写程序除算法,细心也是很重要的,不能随手啊。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。