oracle存储过程中游标的问题

Lkf2006 2007-07-10 01:42:55
oracle存储过程中一游标定义为:
CURSOR MANU_BOM_ITEM IS
SELECT vcAspID,vcGoodsID,vcGoodsName,vcChildBomID,vcBomItemHelpCode FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID;
................
open MANU_BOM_ITEM ;
fetch MANU_BOM_ITEM into v_vcAspID,v_vcGoodsID,v_vcGoodsName,v_vcChildBomID,v_vcBomItemHelpCode;
while MANU_BOM_ITEM%found loop
...............
end loop;
close MANU_BOM_ITEM ;
..............

我在pl/sql 中测试时,执行到while MANU_BOM_ITEM%found loop后,就直接执行close MANU_BOM_ITEM ,也就是游标没有记录集返回;但我在sql窗口中直接执行游标里的select语句:
SELECT vcAspID,vcGoodsID,vcGoodsName,vcChildBomID,vcBomItemHelpCode FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID;
是有记录集的.
真是奇怪,哪位高手指点下?


...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lkf2006 2007-07-11
  • 打赏
  • 举报
回复
我在open cursor前SELECT count(*) into v_rowcount FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID; 这时v_rowcount为0
zhangyanxxxx 2007-07-11
  • 打赏
  • 举报
回复
可能是因为
SELECT vcAspID,vcGoodsID,vcGoodsName,vcChildBomID,vcBomItemHelpCode FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID;
中的查询没有符合条件的返回结果,所以在MANU_BOM_ITEM%found 为FALSE,所以没有进入循环
killlaoli 2007-07-10
  • 打赏
  • 举报
回复
把给v_vcBomID和v_aspID赋值的部分贴出来看看啊
bobfang 2007-07-10
  • 打赏
  • 举报
回复
v_vcBomID和v_aspID的值与你在sql窗口中直接的SQL中的值一样吗?建议在open cursor前select count(*)和输出那两个变量的值看看。

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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