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