– 123 –
же. Типы данных
SQL были описаны в разделе 3.1.5. Самые распространенные ти-
пы
PL/pgSQL: Boolean, text, char, integer, double precision, date, time.
Объявление переменных
Все переменные программного блока должны быть предварительно объяв-
лены с ключевым словом
DECLARE. Если переменная не инициализируется при
объявлении, по умолчанию ей присваивается псевдозначение
SQL NULL.
ПРИМЕЧАНИЕ. Как будет показано в разделе «Передача управления», в одной из команд
цикле FOR
предусмотрена возможность инициализации управляющей переменной. Переменную
цикла FOR не нужно заранее объявлять в секции DECLARE того блока, в котором находится цикл.
Таким образом, переменные цикла FOR составляют единственное исключение из правила, согласно
которому все переменные должны объявляться в начале соответствующего блока.
Переменные, объявленные в блоке, доступны во всех его вложенных бло-
ках, но обратное неверно: переменные, объявленные во вложенном блоке,
уничтожаются в конце этого блока и недоступны во внешнем блоке. Синтаксис
объявления переменной приведен ниже.
имя_переменнойтип_данных[:=значение];
Таким образом, объявление состоит из имени и типа переменной (следую-
щих именно в этом порядке) и завершается символом точки с запятой
(;).
В листинге 6.6 приведены объявления переменных типов
integer, varchar
(число в круглых скобках обозначает максимальную длину строки в символах)
и
float.
Листинг 6.6. Объявление переменных
CREATEFUNCTIONidentifier(arguments)RETURNStypeAS'
DECLARE
‐‐Объявитьчисловуюпеременнуютипаinteger.
subject_idinteger;
‐‐Объявитьстроковуюпеременнуюпеременнойдлины.
book_titlevarchar(10);
‐‐Объявитьвещественнуючисловуюпеременную.
bookpricefloat;
BEGIN
команды;
END;
'LANGUAGE'plpgsql';
Объявление переменной также может содержать дополнительные модифи-
каторы. Ключевое слово
CONSTANT указывает на то, что вместо переменной оп-
ределяется константа. Пример определения константы рассматриваются в лис-
тинге 6.7 в этом разделе.
Ключевые слова
NOT NULL означают, что переменной не может присваивать-
ся псевдозначение
NULL. Если переменной, объявленной с модификатором NOT
NULL, в программном блоке присваивается псевдозначение NULL, происходит
ошибка времени выполнения. Поскольку при объявлении без инициализации
всем переменным автоматически присваивается псевдозиачение
NULL, перемен-
ные с модификатором
NOT NULL обязательно должны инициализироваться.