传递VARCHAR2的表的程序

问题描述 投票:0回答:1

我需要有程序的封装接受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的论点

我究竟做错了什么?

oracle plsql
1个回答
3
投票

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

declare
    l_array pkg_name.charArray;    
begin
    l_array(1) := '131240';
    pkg_name.call_me (l_array, 'name');
end;
© www.soinside.com 2019 - 2024. All rights reserved.