Можно ли создать Java-представление ассоциативного массива Oracle на уровне пакета. Например, учитывая следующее:
CREATE OR REPLACE PACKAGE MyPackage AS
TYPE t_numbers IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
Я обнаружил, что не могу написать следующую java:
ArrayDescriptor descriptor =
ArrayDescriptor.createDescriptor("MyPackage.t_numbers", connection);
(выдает SQLException «Недопустимый шаблон имени»).
Каков правильный синтаксис для ArrayDescriptor, ссылающегося на ассоциативный массив на уровне пакета? Такое вообще существует?




См. http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3696816290928 и особенно http://download.oracle.com/docs/cd/B10501_01/java.920/a96654/oci_func.htm#1017512.
@Andy большое спасибо за ваш комментарий. Это помогло мне решить ту же проблему, что и у вас, даже если гниение ссылок влияет на вторую ссылку ответа.
Вы также можете использовать OracleConnection.createOracleArray ()
Обратите внимание, что arrayTypeName должен быть типа table of.
Также вам может пригодиться мой мой ответ на getArray () и writeArray ().
Вторая ссылка была правильной, спасибо. Подводя итог - не используйте ArrayDescriptor при обращении к ассоциативным массивам на уровне пакета. Приведите вызываемый оператор к OracleCallableStatement и используйте setPlsqlIndexTable. Хотя не поддерживает записи ...