Секция объявлений

В эту секцию помещаются объявления всех переменных, констант, курсоров и локальных подпрограмм, используемых в данном блоке. Наличие секции объявлений необязательно: если в программе нет перечисленных выше компонент, то она может отсутствовать.

Объявление переменной обязательно содержит указания на тип данных. В PL/SQL в дополнении ко всем разрешенным в SQL типам применяются также несколько собственных типов. Необходимо помнить, что в большинстве случаев возможности и ограничения для типов PL/SQL и БД идентичны, но некоторые из них имеют настолько различные возможности хранения, что это может рано или поздно проявиться и здорово навредить работе.

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

 

имя_переменной тип_данных [CONSTANT] [NOT NULL]

[{:=| DEFAULT} начальное_значение]

 

Сразу после объявления переменной ей по умолчанию присваивается значение NULL. Инициализация всех переменных – характерная черта PL/SQL, этим он отличается от таких языков как C и Ada. Инициализировать переменную значением отличным от NULL, позволяет оператор присваивания или указание ключевого слова DEFAULT:

 

counter BINARY_INTEGER:=0;

priority VARCHAR2(8) DEFAULT ‘LOW’;

 

В объявление переменной можно добавить ограничение NOT NULL, означающее что значение NULL для этой переменной недопустимы. Если такое ограничение указано, то необходимо явно присвоить начальное значение этой переменной.

При объявлении констант (которое осуществляется добавлением ключевого слова CONSTANT) необходимо указать начальное значение, которое в дальнейшем не может быть изменено, например:

 

Min_order_qty NUMBER (1) CONSTANT :=5;

 

Объявления с ограничениями и без ограничений.

Указания на тип данных может содержать ограничение, а может не содержать. Ограничение заключается в указании допустимого размера, масштаба или точности, не превышающих соответствующие значения для ограниченного типа. Например

total_sales NUMBER(15,2);--Есть ограничение.

emp_id VARCHAR2(9);--Есть ограничение.

company_number NUMBER; --Нет ограничения.

book_title VARCHAR2; --Ошибка.

Данные, объявленные с ограничениями, занимают меньше места, чем не ограниченные. Не все типы данных могут быть указаны без ограничений. Например, нельзя объявить переменную с типом VARCHAR2 – необходимо указать её максимальный размер.

Закреплённые объявления типов (Использование атрибутов).Для того чтобы закрепить (anchor) тип данных скалярной переменной (которая держит одно значение) за другой переменной или столбцом таблицы или представления БД, применяется атрибут % TYPE. Атрибут %ROWTYPE позволяет закрепления объявление за курсором или таблицей.

При объявлении переменной (но не в определении столбца) инструкция NOT NULL может следовать за закреплением типа, в этом случае необходимо, чтобы объявления типов содержали значения по умолчанию. Значение по умолчанию для закреплённого объявления может отличаться от значения по умолчанию основного объявления.