将varchar2表传递给过程

时间:2019-02-04 21:42:55

标签: oracle plsql

我需要有一个程序包,该程序接受varchar2(255)类型表的参数。

包装规格:

  type charArray is table of varchar2(255) index by binary_integer;

包装体:

PROCEDURE call_me (p1 IN charArray, p2 IN VARCHAR2) IS ...

我尝试使用以下方法调用此过程:

declare
    type t_type is table of varchar2(255) index by binary_integer;

    l_array t_type;

begin

  l_array := ('131240');

  pkg._name.call_me (l_array, 'name');

end;

我收到此错误:

  

PLS-00306:“ call_me”调用中参数的数量或类型错误

我在做什么错?

1 个答案:

答案 0 :(得分:3)

您已经用相同的定义声明了两种类型,但这并不能使它们兼容。为了将表传递到包中,必须使用包中声明的类型:

declare
    l_array pkg_name.charArray;    
begin
    l_array(1) := '131240';
    pkg_name.call_me (l_array, 'name');
end;