请教,一个关于在Pb中用到游标的死循环问题?

dingzhanxing 2005-10-03 05:44:22
declare cursor1 cursor for
select course,score from stuinfo
where no=:stuno and term ='第一学期';
messagebox("",stuno)
open cursor1;

do while con
fetch cursor1 into :stucourse,:stuscore;

insert into stuscore8(course,score) values (:stucourse,:stuscore);

if sqlca.sqlcode=100 then **


con=false;

end if
loop
大家帮我看一下,在**语句为何没有执行,sqlca.sqlcode=100用这个 语句来判断游标到表尾(即表中再没有符合条件的纪录了),是否正确??
谢谢各位大虾!!
...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
thelazyman 2005-10-09
  • 打赏
  • 举报
回复
declare cursor1 cursor for
select course,score from stuinfo
where no=:stuno and term ='第一学期';

open cursor1;
fetch cursor1 into :stucourse,:stuscore;
do while con

insert into stuscore8(course,score) values (:stucourse,:stuscore);

if sqlca.sqlcode=100 then **

con=false;
end if
fetch cursor1 into :stucourse,:stuscore;
loop

close cursor1;
  • 打赏
  • 举报
回复
同意 zvanadium(zhengfan) 的分析.
除了以上方法,你也可以在 fetch cursor1 into :stucourse,:stuscore;
这一句后加上一句: if sqlca.sqlcode<> 0 then exit 就OK了
wscft 2005-10-08
  • 打赏
  • 举报
回复
建议照一楼的方法修改,
先 fetch 数据
再看看 sqlcode 的值,
根据其值再做进一部的操作!
robert126 2005-10-04
  • 打赏
  • 举报
回复
支持使用sql语句,虽然麻烦但是很有效
zvanadium 2005-10-03
  • 打赏
  • 举报
回复
//还有一种方法是直接使用SQL语句,不需要游标
insert into stuscore8(course,score)
select course,score from stuinfo
where no=:stuno and term ='第一学期';

if sqlca.sqlcode = 0 then
commit;
else
rollback;
end if
zvanadium 2005-10-03
  • 打赏
  • 举报
回复
当 insert into stuscore8(course,score) values (:stucourse,:stuscore) 的时候
sqlca.sqlcode 就会等于 0(插入成功)或 -1 (失败)
所以就死循环。
huangxinru 2005-10-03
  • 打赏
  • 举报
回复
open cursor1;
fetch cursor1 into :stucourse,:stuscore;
do while sqlca.sqlcode = 0
insert into stuscore8(course,score) values (:stucourse,:stuscore);
fetch cursor1 into :stucourse,:stuscore;
loop

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧