Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с Oracle / Язык PL SQL.docx
Скачиваний:
11
Добавлен:
28.06.2021
Размер:
768.74 Кб
Скачать

Работа с переменными типа запись

До сих пор в объявлениях описывались простые скалярные переменные и константы, основанные на типах данных Oracle (NUMBER), и подтипы базовых типов (INTEGER). В блоке программы PL/SQL могут быть объявлены определенные пользователем типы, после чего они могут использоваться в программе.

Рассмотрим объявление и использование простого определенного пользователем типа, которым является запись. Тип запись включает в себя одно или несколько связанных полей, каждое из которых имеет свое имя и тип.

Программы PL/SQL используют тип запись для создания переменных, отвечающих структуре записи в таблице. Пользователь может объявить тип запись с именем bookRecord и использовать его для соз­дания переменной типа запись, в которой содержатся поля book_ID, b_name, b_author, b_year, b_price, b_count и b_cat_ID. После объявления переменной типа запись можно работать с отдельными полями записи или передать всю запись в подпрограмму как одно целое.

Рассмотрим анонимный блок PL/SQL, иллюст­рирующий объявление и использование типа запись. В разделе объявлений блока объявляется определяемый пользователем тип, соответствующий атрибутам таблицы Catalogs, а затем объявляются две переменные типа за­пись, использующие этот новый тип. Выполняются следующие действия:

  • делается ссылка на индивидуальные поля переменной типа запись, с использованием точечной нотации;

  • присваиваются значения полям переменной типа запись;

  • переменная типа запись передается в качестве параметра при вызо­ве процедуры;

  • копируются значения полей одной записи в другую запись того же типа;

  • поля переменной типа запись используются в качестве выражений в команде INSERT.

Атрибуты %type и %rowtype

Эти атрибуты используются в программе для объявления переменных, констант, отдельных полей в записях и в переменных типа запись, соответствующих по свойст­вам полям базы данных и таблиц или других программных конструкций. Использование этих атрибутов упрощает объявление про­граммных конструкций и делает программы более гибкими по отно­шению к изменениям в базах данных. Например, при изменении ад­министратором таблицы Catalogs и добавления в нее нового поля переменная типа запись, объявленная с использованием атрибута типа %ROWTYPE, автоматически подстраивается в процессе выполнения программы к новому полю без изменения программы.

Атрибут %TYPE используется при объявлении переменной, константы или поля в переменной типа запись для пере­хвата во время выполнения программы типа данных другой программ­ной конструкции или поля в таблице базы данных. Рассмотрим анонимный блок, исполь­зующий атрибут %TYPE для ссылки на поля таблицы Catalogs при объявлении типа catalogRecord.

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

Переменная типа запись, которая объявляется с помощью атрибута %ROWTYPE, автоматически получает для своих полей имена, соответствующие полям таблицы, на которую выполняется ссылка.

Преимущество атрибутов %TYPE и %ROWTYPE в том, что они делают объявления программы гибкими в отношении неизбежных изменений структуры данных. Программы в предыдущих примерах корректно работают при объявлении поля cat_name таблицы Catalogs как принадлежащегок любому из типов VARCHAR2(1), VARCHAR2(50), VARCHAR2(250) и т. д.