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 行之后。
- 不要忘记在最后关闭光标。
请帮我解决我的 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 行之后。
- 不要忘记在最后关闭光标。