Oracle 如何在包中的过程之间传递游标rowtype

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;

我在包中有一个显式游标,我基于这个游标创建了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;

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上,我写它时没有括号。我可以看到,游标对于包是全局的,是否可以将本地游标行类型传递给同一包中可用的任何函数或过程?