oracle - 如何在包中的过程之间传递游标行类型

标签 oracle plsql

我在包中有一个显式游标,我基于此游标创建行类型,如何在过程之间传递此行类型? 我的 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/

相关文章:

database - 在 PLSQL 的条件语句中使用查询?

sql - 识别两个表之间差异的最快方法?

sql - Oracle - 从 XMLType 中的 XML 序言中提取 XML 版本和编码

function - PL/SQL : ORA-00932: inconsistent datatypes: expected NUMBER got USER_NAME. VARCHAR_ARRAY

sql - 旧的 : and the NEW:

oracle - PL/SQL : How to handle timeout for DBMS_AQ. 出列

python - 有时无法使用 Django 删除 Oracle 数据库行

sql - 应用 GROUP BY 后检查相同数量(棘手的场景)

oracle - ORDER BY DECODE(BLAH, [COLUMN NUMBER]) 在单列查询上。它是如何工作的?

sql - oracle 触发器和 json_value