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。为啥会报错,帮忙看一下。谢谢大家。
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;
sys_refcursor
在不行 加群 :2987841
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 /
1PL/SQL procedure successfully completed.