Oracle 如何在包中的过程之间传递游标rowtype
我在包中有一个显式游标,我基于这个游标创建了rowtype,我如何在过程之间传递这个rowtype? 我的exmaple在编译时挂断了Oracle 如何在包中的过程之间传递游标rowtype,oracle,plsql,Oracle,Plsql,我在包中有一个显式游标,我基于这个游标创建了rowtype,我如何在过程之间传递这个rowtype? 我的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;
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
addcursorname中添加参数类型。该软件包编译并运行:
-- 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;
如果不可能,请告知结构,我可以在包中的过程之间传递不基于表的数据行类型。我不确定你说“挂起”是什么意思(你打电话了吗?),但
cursor cur(param)
和procedure main(param)
缺少数据类型。我是说program被卡住了,谷歌翻译-“挂起”从俄语“зззззззззззззззз107?计算中有两种不同的东西,它是挂起的。我上面的例子就是伪代码。我的源代码编译得很好,没有失败,但它挂起了,我发现哪里有错误。它挂起在getClobVal上,我写它时没有括号。我可以看到,游标对于包是全局的,是否可以将本地游标行类型传递给同一包中可用的任何函数或过程?