如何将NUMBER_LIST_TYPE IN参数传递给ORACLE存储过程

时间:2019-01-09 06:25:12

标签: oracle plsql oracle11g

我有一个这样的存储过程:

Create or replace procedure readEmpDetails (empRowList NUMBER_LIST_TYPE, 
                                            created_by VARCHAR2, 
                                            accessid NUMBER )
is

如何传递NUMBER_LIST_TYPE的参数:

begin  readEmpDetails([124, 155, 147], '100', 2);  end;

我想在Oracle SQL Developer中传递上述参数。

2 个答案:

答案 0 :(得分:1)

执行以下步骤:

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;
/

答案 1 :(得分:1)

如果NUMBER_LIST_TYPE是有效的oracle类型,则将其作为NUMBER_LIST_TYPE(124, 155, 147)传递。 然后,您将“即时”创建具有3个元素的类型的实例。