Reputation: 117
I have an explicit cursor in package, I create rowtype based on this cursor, how can I pass this rowtype between procedures? My exmaple hung up when compile.
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;
Upvotes: 2
Views: 2607
Reputation: 14858
You forgot to add parameter types in cursor, definition of procedure main
and in fetch
add cursor name. This package compiled and worked:
-- 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;
Upvotes: 2