Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 作为INOUT参数的记录集合_Sql_Oracle_Stored Procedures - Fatal编程技术网

Sql 作为INOUT参数的记录集合

Sql 作为INOUT参数的记录集合,sql,oracle,stored-procedures,Sql,Oracle,Stored Procedures,是否有任何方法可以将记录集合作为Oracle过程的INOUT参数传递?当然。声明集合 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 loo

是否有任何方法可以将记录集合作为Oracle过程的
INOUT
参数传递?

当然。声明集合

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.