作为INOUT参数的记录集合

时间:2012-02-21 03:04:33

标签: sql oracle stored-procedures

有没有办法将记录集合作为Oracle过程的INOUT参数传递?

1 个答案:

答案 0 :(得分:2)

不确定。声明集合

create package pkg_coll
as
  type emp_tbl is table of emp%rowtype;
end;
/

然后您可以使用集合类型作为过程的参数

create or replace procedure proc_coll( p_emps in out pkg_coll.emp_tbl )
as
begin
  for i in 1 .. p_emps.count
  loop
    dbms_output.put_line( p_emps(i).empno );
  end loop;
  p_emps(1).ename := 'CAVE';
end;

然后你可以打电话

SQL> declare
  2    l_emps pkg_coll.emp_tbl;
  3  begin
  4    select *
  5      bulk collect into l_emps
  6      from emp;
  7    proc_coll( l_emps );
  8  end;
  9  /
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934

PL/SQL procedure successfully completed.