从函数返回Oracle关联数组

时间:2010-06-10 16:25:17

标签: oracle plsql associative-array parameter-passing

有人知道是否有可能返回一个关联数组作为Oracle函数的结果,如果有,你有没有任何例子?

我有一个Oracle包,其中包含一个如下定义的关联数组声明:

TYPE EVENTPARAM IS TABLE OF NUMBER
    INDEX BY BINARY_INTEGER;  

然后在包外的存储过程中使用它,如下所示:

v_CompParams areva_interface.eventparam;

目的是在变量v_CompParams中存储一个关联的字符串数组,从另一个包中的Parse函数返回。其定义如下:

PACKAGE STRING_MANIP  
IS 

    TYPE a_array IS TABLE OF NUMBER 
        INDEX BY BINARY_INTEGER; 

    FUNCTION Parse (v_string VARCHAR2, v_delim VARCHAR2) RETURN a_array; 
    FUNCTION RowCount(colln IN a_array) RETURN NUMBER;

END;

实现此目的的代码是:

v_CompParams := STRING_MANIP.PARSE(v_CompID,v_Delim);  

不幸的是它不起作用,我收到错误'PLS-00382:表达式类型错误'。我愚蠢地假设,因为a_array来自与变量v_CompParams相同的源Oracle类型,所以它们之间没有问题。任何帮助非常感谢。

亲切的问候

Paul J。

1 个答案:

答案 0 :(得分:6)

要成为非常“相同”的类型,必须将v_CompParams定义为:

v_CompParams STRING_MANIP.a_array;