Oracle中的游标使用问题

新建文件夹 2009-11-09 04:50:33

DECLARE
var_cursor SYS_REFCURSOR;
BEGIN
procedure_name(p_1 => NULL,
p_2 => NULL,
p_3 => NULL,
p_cursor => var_cursor);
FOR i IN var_cursor LOOP
dbms_output.put_line(i.col_name);
END LOOP;
END;

我的意图是:
首先定义一个游标var_cursor。
然后执行一个存储过程procedure_name,它有四个参数,前三个都给他NULL,第四个是一个out游标,我将它赋给了上面定义的var_cursor。
然后遍历游标,把值输出。
报错在FOR i IN var_cursor LOOP这里,错误是PLS-00221: 'var_cursor' is not a procedure or is undefined。

为啥会报错,帮忙看一下。谢谢大家。
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习了
inthirties 2009-11-09
  • 打赏
  • 举报
回复
sys_refcursor

不支持for in loop获取值

只能用fetch的方式

SQL> declare
2 var_cursor SYS_REFCURSOR;
3 v_id number;
4 begin
5 open var_cursor for select 1 id from dual;
6 loop
7 fetch var_cursor into v_id;
8 exit when var_cursor%notfound;
9 dbms_output.put_line(v_id);
10 end loop;
11 end;
12 /
1

PL/SQL procedure successfully completed.
中智软件科技 2009-11-09
  • 打赏
  • 举报
回复
用系统游标
sys_refcursor
在不行 加群 :2987841
archwuke1 2009-11-09
  • 打赏
  • 举报
回复
是不是要用

:var_cursor
小灰狼W 2009-11-09
  • 打赏
  • 举报
回复
p_cursor是sys_refcursor类型传出参数吗

FOR i IN var_cursor LOOP
dbms_output.put_line(i.col_name);
END LOOP;
确认var_cursor处于打开状态
改成
loop
fetch var_cursor into v1,v2,v3;--变量要定义
exit when var_cursor%notfound;
dbms_output.put_line(v1);
end;
close var_cursor;

17,086

社区成员

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

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