Тип записи (record type) — это группа связанных полей, каждое из которых имеет свои собственные имя и тип данных. Тип записи обычно используется в программах PL/SQL для создания переменных, соответствующих всем столбцам таблицы или их подмножеству. Например, в следующем фрагменте программы тип записи, определяемый пользователем, объявляется для соответствия атрибутам таблицы базы данных, а затем с применением нового типа объявляется переменная.
declare
tуре part_record is record (id integer,
unit_price number(10,2),
description varchar2(200));
current_part part_record;
Тип вложенной таблицы (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;
Подобно вложенным таблицам, в программе можно объявить тип изменяемого массива (varray – varying 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;
В программах 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;