pb 中游标循环问题,急在线等待

wsh_dy 2002-09-08 09:59:52
我在事件中作了一个调用plsql的的程序,指针的数据有,但是每次循环一次就退出,
请各位帮着看一下,循环出了什么问题,下面是代码:declare cur1 CURSOR FOR
select distinct patient_id,visit_id from inp_bill_detail
where billing_date_time >= to_date(:em_start.text,'yyyy-mm-dd')
and billing_date_time <= to_date(:em_end.text,'yyyy-mm-dd')
and order_doct is null;
oPEN cur1;
FETCH cur1 INTO :patient_id,:visit_id;
DO WHILE sqlca.sqlcode = 0
FETCH cur1 INTO :patient_id,:visit_id;
select doctor_in_charge into :doct_name from pats_in_hospital
where patient_id=:patient_id and visit_id=:visit_id;
update inp_bill_detail set order_doct=:doct_name where
patient_id=:patient_id and visit_id=:visit_id and order_doct is null;
commit;

commit;
FETCH cur1 INTO :patient_id,:visit_id;
LOOP
CLOSE cur1;

...全文
123 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bilbo0214 2002-09-08
  • 打赏
  • 举报
回复
你为什么要写两个commit;
这会改变sqlca.sqlcode的值,当然会退出.
而且建议循环的条件不要用sqlca.sqlcode ,如果是实际问题,可以换一个可以控制的变量.
其实这样的编程方法虽然可以解决问题,但是效率不高,特别是遇到数据量大的时候,简直就成了系统的运行瓶颈,建议使用后台数据库的过程或触发器.
如果实在要用这个方法,希望能先优化你的SQL,这个plsql写的的确不怎么样,根本没有优化,而且思路也不很清晰.
个人观点,请不要见怪
are2000 2002-09-08
  • 打赏
  • 举报
回复
每句sql后都判断一下sqlca.sqlcode的值,看看究竟是哪句sql出的问题。
wk_1978 2002-09-08
  • 打赏
  • 举报
回复
DO WHILE sqlca.sqlcode = 0 -> DO WHILE sqlca.sqlcode <> 0
或者用for循环

1,109

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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