各位老大帮小弟看一段程序,谢谢!!
String ls_text,ls_name,ls_owner,ls_type,ls_text2
Long ll_i,ll_rows
ls_text='sp_help'
ll_i=0
Declare cur_a Dynamic Cursor For SQLSA;
Prepare SQLSA From :ls_text;
Open DyNamic cur_a;
Fetch cur_a Into :ls_name,:ls_owner,:ls_type;
Do While SQLCA.SQLCODE=0
If ls_type='user table' Then
If ls_name<>'aaa' Then
ll_i++
ls_text2='Select Count(*) From '+ls_name
Declare cur_b Dynamic Cursor For SQLSA;
Prepare SQLSA From :ls_text2;
Open Dynamic cur_b;
Fetch cur_b Into :ll_rows;
Do While SQLCA.SQLCODE=0
Update aaa Set name=:ls_name,rows=:ll_rows
Where id=:ll_i;
Fetch cur_b Into :ll_rows;
Loop
Close cur_b;
End If
End If
Fetch cur_a Into :ls_name,:ls_owner,:ls_type;
Loop
Close cur_a;
Commit;
为什么cur_b这个游标不能被open?
问题点数:50、回复次数:6Top
1 楼good__student(谦谦君子)回复于 2005-02-06 16:10:23 得分 0
好象是参数不对应这个存储过程的游标。Top
2 楼songzj8(海风)回复于 2005-02-06 16:20:32 得分 20
cur_b 需要用另外一个事务
需要重新创建一个sqlca这样的事务对象Top
3 楼kkbgp(kkb)回复于 2005-02-06 17:11:09 得分 10
同意
可以尝试创建另一个事务B,并在B中定义游标cur_bTop
4 楼ghostagain(心情卡片)回复于 2005-02-11 15:58:32 得分 10
同意 在游标里定义游标要另一个事务的Top
5 楼bowling(保龄球大师)回复于 2005-02-16 15:01:30 得分 10
用游标进行多重循环计算,速度太慢,不建议这么用。
我曾经刚开始学pb的时候,也是用游标来循环计算的,结果一个统计做了四五小时,后来改进后,才一、二分中就ok了。Top
6 楼bowling(保龄球大师)回复于 2005-02-16 15:02:24 得分 0
建议使用dataset把数据读入内存后,在dataset上进行循环,应该好多了。Top




