Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

Вложенные таблицы

Тип вложенной таблицы (nested table type) можно объявлять для создания переменных, содержащих один или несколько столбцов и неограниченное число строк, т.е. переменных, подобных таблицам баз данных. Например, в следующем фрагменте программы объявляется тип вложенной таблицы для соответствия таблице баз данных, а затем с использованием нового типа объявляется переменная.

declare

type part_record is record (id integer,

unit_price number(10,2),

description varchar2(200));

type parts_table is table of part_record;

current_parts_table parts_table;

Изменяемые массивы

Подобно вложенным таблицам, в программе можно объявить тип изменяемого массива (varrayvarying array) для создания переменных табличного вида, содержащих один или несколько столбцов и ограниченное число строк. Например, в следующем фрагменте программы тип изменяемого массива объявляется для соответствия таблице базы данных, а затем – переменная, содержащая до трех записей.

declare

type part_record is record (id integer,

unit_price number(10,2),

description varchar2(150));

type parts_table is varray(3) of part_record;

current_parts_table parts_table;

24.3.4 Атрибуты

В программах PL/SQL можно использовать атрибуты %TYPE и %ROWTYPE для того, чтобы объявлять переменные, константы и даже определяемые пользователями подтипы и составные типы, соответствующие свойствам столбцов и таблиц баз данных, или другие программные конструкции. Использование атрибутов не только упрощает объявление программных конструкций, но и делает программы более удобными для модификации баз данных. Например, после того как администратор модифицирует таблицу и добавляет новый столбец, переменная типа записи, объявленная с атрибутом %ROWTYPE, в процессе работы автоматически регулируется и учитывает новый столбец. Ниже атрибуты %TYPE и %ROWTYPE рассмотрены более подробно.

%TYPE

При объявлении программных конструкций PL/SQL можно применять атрибут %TYPE. С его помощью в процессе выполнения программы можно использовать тип данных, принадлежащий другой программной конструкции или столбцу таблицы базы данных. Например, в следующем фрагменте программы показано использование атрибута %TYPE для ссылки на столбцы таблицы SALES.PARTS при объявлении типа PART_RECORD.

declare

type part_record is record (

/*ОБЪЯВЛЕНИЕ ПОЛЯ ЗАПИСИ ИДЕНТИЧНОГО ПО ТИПУ ДАННЫХ СО СТОЛБЦОМ ID ТАБЛИЦЫ PARTS СХЕМЫ SALES */

id sales.parts.id %type,

unit_price sales.parts.unit_price %type,

description sales.parts.description %type)

current_part part_record;

%ROWTYPE

В программах PL/SQL удобно пользоваться атрибутом %ROWTYPE для того, чтобы в процессе выполнения программы объявлять переменные, имеющие тип записи, и другие конструкции Например, в следующем фрагменте программы показано, как использование атрибута %ROWTYPE может упростить объявление вложенной таблицы CURRENT_PARTS_TABLE.

declare

type parts_table is table of sales.parts %rowtype;

current_parts_table parts_table;

24.3.5 Особые замечания относительно вложенных таблиц и изменяемых массивов

При работе с вложенными таблицами и изменяемыми массивами необходимо иметь в виду то, что:

• вложенные таблицы могут содержать любое число строк; размер таблицы может увеличиваться или уменьшаться динамически;

• число строк в изменяемых массивах постоянно, т.е. ограничено;

• вложенные таблицы могут быть разреженными; Компоненты вложенных таблиц могут вноситься с использованием непоследовательных индексов; кроме того, можно удалять отдельные компоненты из любого места таблицы.

• изменяемые массивы должны оставаться плотными. Компоненты изменяемых массивов должны вноситься с использованием последовательных индексов.