执行游标?

kzipqqlq  于 2022-10-04  发布在  Oracle
关注(0)|答案(1)|浏览(150)

我有一个游标,它调用一个返回表的函数。游标和函数都在一个包中。如何执行此游标以查看输出?

ozxc1zmp

ozxc1zmp1#

只要游标在程序包规范中定义(或至少声明),您就可以运行它并循环来自匿名块的结果:

begin
  for r in your_package.your_cursor loop
    -- do something with result row, e.g.
    -- dbms_output.put_line(r.your_column);
  end loop;
end;
/

举个简单的例子:

create package your_package as
  cursor your_cursor is
    select dummy from dual;
end;
/
begin
  for r in your_package.your_cursor loop
    dbms_output.put_line(r.dummy);
  end loop;
end;
/

fiddle

这也适用于规范中的游标声明和程序包体中的游标主体(fiddle)。

如果光标只在包体中,而不在规范中,那么它将在包之外不可见或不可访问。

相关问题