如何将NUMBER\u LIST\u TYPE IN参数传递给ORACLE存储过程

如何将NUMBER\u LIST\u TYPE IN参数传递给ORACLE存储过程,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我有这样一个存储过程: Create or replace procedure readEmpDetails (empRowList NUMBER_LIST_TYPE, created_by VARCHAR2, accessid NUMBER ) is 如何传递编号列表类型的参数: begin readEmpDet

我有这样一个存储过程:

Create or replace procedure readEmpDetails (empRowList NUMBER_LIST_TYPE, 
                                            created_by VARCHAR2, 
                                            accessid NUMBER )
is
如何传递编号列表类型的参数:

begin  readEmpDetails([124, 155, 147], '100', 2);  end;
我想在Oracle SQL Developer中传递上述参数。

执行以下步骤:

create or replace type T_array_readEmpDetails AS VARRAY(10) of number(4)
/

Create or replace procedure readEmpDetails (t_ar T_array_readEmpDetails, 
                                            created_by VARCHAR2, 
                                            accessid NUMBER )
is
begin
      FOR i IN 1..t_ar.count LOOP
        dbms_output.put_line(t_ar(i));
     END LOOP;
end;
/
 DECLARE
      v T_array_readEmpDetails;
    BEGIN
      v := T_array_readEmpDetails();
      v.EXTEND(3);
      v(1) := 124;
      v(2) := 155;
      v(3) := 147;
      readEmpDetails(v,'A',1);
    END;
/

如果数字列表类型是有效的oracle类型,则将其作为
数字列表类型(124155147)
传递。
然后,您正在创建一个类型实例,其中包含3个“动态”元素。

为什么
EXTEND(4)
而不是
EXTEND(3)
?您将传递一个值为
NULL
@MT0的第四个元素。上面是一个简单的示例。