Oracle:过程中的游标

Oracle: Cursor in a Procedure

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

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

当我尝试使用 - FOR recDocStatusList IN curDocList 时出现错误:[Error] PLS-00221 (2262: 34): PLS-00221: 'CURDOCLIST' is not a procedure or is不明确的。

请帮我解决问题。

如果您愿意迭代游标,则可以在不使用 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 行之后。
  • 不要忘记在最后关闭光标。