我在包中有一个显式游标,我基于此游标创建行类型,如何在过程之间传递此行类型? 我的 exmaple 在编译时挂起了。
cursor cur(param) is
select * from dual where param = 1;
rec cur%rowtype;
procedure do_something_with_rec(p_rec in cur%rowtype)
is
begin
dbms_output.put_line(p_rec.dummy);
end;
procedure main(param)
is
begin
open cur(param);
loop
fetch into rec;
exit when cur%notfound;
end loop;
close cur;
do_something_with_rec(rec);
end;
最佳答案
您忘记在游标中添加参数类型、过程main
的定义以及在fetch
中添加游标名称。该包编译并运行:
-- package
create or replace package p_test is
procedure main(param in number);
end p_test;
-- body
create or replace package body p_test is
cursor cur(param in number) is select * from dual where param = 1;
rec cur%rowtype;
procedure do_something_with_rec(p_rec in cur%rowtype) is
begin
dbms_output.put_line(p_rec.dummy);
end;
procedure main(param in number) is
begin
open cur(param);
loop
fetch cur into rec;
exit when cur%notfound;
end loop;
close cur;
do_something_with_rec(rec);
end;
end p_test;
关于oracle - 如何在包中的过程之间传递游标行类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47886487/