Oracle Ассоциативные массивы, как определить? - PullRequest
3 голосов
/ 04 августа 2020

Я пытаюсь создать ассоциативный массив в Oracle, когда я создаю вложенную таблицу, он отлично работает:

CREATE OR REPLACE TYPE TRNG_BOOK_AUTHORS_TAB 
AS TABLE OF VARCHAR2(500);

Но когда я добавляю индекс, я получаю ошибки:

CREATE OR REPLACE TYPE TRNG_BOOK_AUTHORS_TAB 
AS TABLE OF VARCHAR2(500) INDEX BY PLS_INTEGER;
  • Ошибка: PL / SQL: Анализ модуля компиляции прекращен
  • Ошибка (2,4): PLS-00355: использование таблицы pl / sql не разрешено в этом контексте

Что у меня не так?

1 Ответ

3 голосов
/ 05 августа 2020

Вы создаете тип схемы; это могут быть вложенные таблицы или различные массивы (varrays), но не ассоциативные массивы.

Из документации для оператор create type :

Автономный Тип коллекции, который вы создаете с помощью оператора CREATE TYPE, отличается от типа коллекции, который вы определяете с помощью ключевого слова TYPE в блоке или пакете PL / SQL. Для получения информации о последнем, см. «Объявление переменной коллекции» .

С помощью оператора CREATE TYPE вы можете создавать вложенные таблицы и типы VARRAY, но не ассоциативные массивы. В блоке или пакете PL / SQL вы можете определить все три типа коллекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...