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;
是有记录集的.
真是奇怪,哪位高手指点下? 

解决方案 »

  1.   

    v_vcBomID和v_aspID的值与你在sql窗口中直接的SQL中的值一样吗?建议在open cursor前select count(*)和输出那两个变量的值看看。
      

  2.   

    把给v_vcBomID和v_aspID赋值的部分贴出来看看啊
      

  3.   

    我在open cursor前SELECT count(*) into v_rowcount FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID; 这时v_rowcount为0
      

  4.   

    可能是因为
        SELECT vcAspID,vcGoodsID,vcGoodsName,vcChildBomID,vcBomItemHelpCode FROM TB_MANU_BOM_ITEM WHERE vcBomID = v_vcBomID AND vcAspID=v_aspID; 
    中的查询没有符合条件的返回结果,所以在MANU_BOM_ITEM%found 为FALSE,所以没有进入循环