Вернуть ассоциативный массив Oracle из функции - PullRequest
2 голосов
/ 10 июня 2010

Кто-нибудь знает, возможно ли вернуть ассоциативный массив как результат функции 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 происходит из того же исходного типа Oracle, что и переменная v_CompParams, между ними не будет проблем с приведением.Любая помощь очень ценится.

С уважением

Пол Дж.

1 Ответ

6 голосов
/ 10 июня 2010

Чтобы быть того же типа, v_CompParams должен быть определен как:

v_CompParams STRING_MANIP.a_array;
...