如何在PLSQL块中探索out游标参数?

时间:2012-06-13 16:27:50

标签: parameters plsql cursor out

我需要验证具有out游标参数的过程。具体来说,我需要查看检索内容。

我试试这个:

declare
  type cursor_out is ref cursor;
  cur cursor_out; 
  fila activ_economica%rowtype;
  procedure test(algo out cursor_out) is
  begin
    open algo for select * from activ_economica;  
  end;
begin
  test(cur);
  for i in cur loop
    fila := i;
    dbms_output.put(fila.id_activ_economica ||' ' );
    dbms_output.put_line(fila.nom_activ_economica);
  end loop;
end;

错误是“cur”尚未定义。

1 个答案:

答案 0 :(得分:2)

您不能将游标FOR循环与ref游标一起使用,您必须这样做:

declare
  type cursor_out is ref cursor;
  cur cursor_out; 
  fila activ_economica%rowtype;
  procedure test(algo out cursor_out) is
  begin
    open algo for select * from activ_economica;  
  end;
begin
  test(cur);
  loop
    fetch cur into fila;
    exit when cur%notfound;
    dbms_output.put(fila.id_activ_economica ||' ' );
    dbms_output.put_line(fila.nom_activ_economica);
  end loop;
  close cur;
end;

注意:不再需要定义自己的引用游标类型(除非您使用的是旧版本的Oracle)。您只需使用SYS_REFCURSOR:

declare
  cur sys_refcursor; 
  ...