编译存储过程时找不到关联数组构造函数

时间:2018-10-18 09:12:00

标签: oracle stored-procedures plsql

使用在包中已定义为的类型

Type ArrError Is Table Of Varchar2(20) Index By Binary_Integer;

并在存储过程中声明如下

arr_error(1) := PKG_TEST.arrerror(p_error);

导致以下错误PLS-00222: no function with name 'ARRERROR' exists in this scope。在上面的语句中,p_error的类型为VARCHAR2

使用通过CREATE TYPE命令创建的全局类型时,此方法可以正常工作。 在CREATE PROCEDURE块中使用上述初始化。

1 个答案:

答案 0 :(得分:1)

如果您有SELECT LTRIM(TO_CHAR(COL1,'9999.990')) FROM table1;

,则无需初始化
Index by ...

如果您没有declare TYPE ArrError IS TABLE OF VARCHAR2 (20) index by binary_integer; arr_error ArrError; p_error varchar2(20) := 'test'; p_error2 varchar2(20) := 'test2'; begin arr_error(1) := p_error; arr_error(2) := p_error2; dbms_output.put_line('arr_error(1): ' || arr_error(1)); dbms_output.put_line('arr_error(2): ' || arr_error(2)); end; ,则需要调用构造函数:

index by ...