DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Инициализация вложенных таблиц

При создании индексной таблицы без элементов она будет пустой. А при объявлении вложенной таблицы без элементов (см. предыдущий пример) она, подобно другим типам PL/SQL, инициализируется с помощью NULL. При попытке добавить элемент к вложенной NULL-таблице воз­вращается сообщение об ошибке "ORA-6531: Reference to uninitialized col­lection" (ссылка на неинициализированную сборную конструкцию). Эта ошибка соответствует предопределенной исключительной ситуации COLLECTION_IS_NULL. При выполнении следующего раздела возник­нет ошибка:
Как же инициализировать вложенную таблицу? Это делается при по­мощи функции-конструктора. Конструктор вложенной таблицы имеет то же имя, что и сама таблица. Однако число его аргументов варьируется, причем каждый из аргументов должен иметь тип, совместимый с типом таблицы. Аргументы становятся элементами таблицы с последовательными индексами, начиная с индекса 1. В следующем сеансе SQL*Plus использу­ются конструкторы вложенных таблиц:
Пустые таблицы 
Обратите внимание на объявление        в предыдущем блоке:
v_Tab2 инициализируется вызовом конструктора без аргументов. При этом создается таблица без элементов, однако она не является атомарной NULL-таблицей. Продемонстрируем это с помощью сеанса SQL*Plus:
Добавление элементов в существующую таблицу
Хотя для таблицы не устанавливается никаких ограничений, нельзя при­своить значение элементу, который еще не существует. Если попытаться это сделать, PL/SQL выдаст сообщение об ошибке "ORA-6533: Subscript beyond count" (неправильный индекс), которая эквивалентна предопре­деленной исключительной ситуации SUBSCRIPT_BEYOND_COUNT. Приведем пример:
Совет
Можно увеличить размер вложенной таблицы при помощи метода EXTEND (см. ниже).

 


рыбалка на выходных в подмосковье с арендой коттеджа дома







jAntivirus