5. ПЕРЕМЕННЫЕ И КОНСТАНТЫ
5.1. Объявление переменных
В блоках PL/SQL взаимодействие с базой данных осуществляется посредством переменных. Переменной может быть присвоена определенная информация, хранимая в базе данных, либо содержимое переменной может быть внесено в базу данных. Переменные могут изменяться непосредственно командами PL/SQL. Переменные определяются в разделе объявлений блока. Каждая переменная имеет конкретный тип, описывающий тип хранящейся в ней информации. Синтаксис объявления переменных:
имя_переменной тип [CONSTANT] [NOT NULL] [:= значение},
где имя_переменной — это имя переменной, тип — это тип переменной, а значение — начальное значение переменной.
Пример:
var1 VARCHAR2(50);
var2 NUMBER := 45;
var3 BINARY_INTEGER := 0;
В качестве имени переменной может быть использован любой разрешенный идентификатор PL/SQL. Если начальное значение переменной не задано (она не инициализирована), по умолчанию ей присваивается NULL. Если в объявлении указано NOT NULL, переменная должна быть инициализирована. Более того, переменной, которая описана как NOT NULL, запрещается присваивать NULL при ее объявлении, в выполняемом разделе или в разделе исключительных ситуаций блока.
Объявление константы аналогично объявлению переменной за исключением того, что необходимо добавить ключевое слово CONSTANT и сразу назначить значение константе. С этого момента никакие другие значения константы не допускаются. Константная переменная рассматривается в блоке в качестве переменной "только для чтения". Константы часто используются для хранения тех значений, которые известны к моменту создания блока.
В разделе объявлений в одной строке может быть описана только одна переменная.
Пример:
не корректное объявление переменных: v_FirstName, v_LastName VARCHAR2(20);
корректное объявление переменных: v_FirstName VARCHAR2(20);
v_LastName VARCHAR2(20);
В PL/SQL информация, содержащаяся в неинициализированной переменной, определяется — такой переменной присваивается NULL (пропущенное или неизвестное значение), поэтому вполне логично, что NULL по умолчанию присваивается любой неинициализированной переменной.
Начальное значение переменной можно присвоить в разделе объявлений программного блока, а также в любой момент исполнения программы символом присваивания — двоеточием, за которым следует знак равенства. Присвоить значение переменной в исполняемом разделе можно по-разному, например воспользовавшись значением, которое возвращает функция, вызванная для заполнения переменной, или текущим значением переменной в арифметическом уравнении, создающем новое значение.
Пример: