Коллекция записей как параметр INOUT - PullRequest
1 голос
/ 21 февраля 2012

Есть ли способ передать коллекцию записей как INOUT параметр процедуры Oracle?

1 Ответ

2 голосов
/ 21 февраля 2012

Конечно. Объявить коллекцию

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...