Oracle:过程中的游标

时间:2015-10-27 15:35:13

标签: oracle stored-procedures cursor package

请帮我解决我的Oracle程序问题。在我的包中,我有一个过程,我想声明一个使用动态查询的游标。

type DocList IS REF CURSOR;
curDocList DocList;
.
.
.
OPEN curDocList FOR v_sql;   --v_sql has dynamic sql
...
FOR recDocStatusList IN curDocList 
      LOOP

当我尝试使用时 - 对于recDocStatusList IN curDocList,它给出了错误:[错误] PLS-00221(2262:34):PLS-00221:' CURDOCLIST'不是程序或未定义。

请帮我纠正这个问题。

1 个答案:

答案 0 :(得分:1)

如果你愿意迭代光标,你可以在不使用FOR循环的情况下执行它。

选项1:

  LOOP
    FETCH curDocList INTO recDocStatusList;
    EXIT WHEN curDocList%NOTFOUND;
    ...
  END LOOP;

选项2:

FETCH curDocList INTO recDocStatusList;
WHILE (curDocList%FOUND)
LOOP
    ...
    FETCH curDocList INTO recDocStatusList;
END LOOP;

一些注释:

  • 请记住首先声明recDocStatusList。
  • 这两个选项都遵循OPEN ... FOR行。
  • 别忘了在最后关闭光标。