Иллюстрированный самоучитель по PostgreSQL

Переменные

Переменные используются в программах PL/pgSQL для хранения изменяемых данных заранее определенного типа. Все переменные программного блока должны быть предварительно объявлены с ключевым словом DECLARE. Если переменная не инициализируется при объявлении, по умолчанию ей присваивается псевдозначение SQL NULL.

Примечание
Как будет показано в разделе "Передача управления", в одной из команд – цикле FOR – предусмотрена возможность инициализации управляющей переменной. Переменную цикла FOR не нужно заранее объявлять в секции DECLARE того блока, в котором находится цикл. Таким образом, переменные цикла FOR составляют единственное исключение из правила, согласно которому все переменные должны объявляться в начале соответствующего блока
.

Типы данных

Переменные PL/pgSQL могут относиться к любому из стандартных типов данных SQL (например, integer или char). Помимо типов данных SQL, в PL/pgSQL также предусмотрен дополнительный тип RECORD, предназначенный для хранения записей без указания полей – эта информация передается при сохранении данных в переменной. Дополнительная информация о типе данных RECORD приводится ниже. Типы данных SQL были описаны в разделе "Типы данных" главы 3.

Самые распространенные типы PL/pgSQL: Boolean, text, char, integer, double precision, date, time.

Объявление

Переменные, используемые в программном блоке PL/pgSQL, должны быть объявлены в секции объявлений этого блока, начинающейся с ключевого слова DECLARE в начале блока. Переменные, объявленные в блоке, доступны во всех его вложенных блоках, но обратное неверно: как упоминалось выше в разделе "Структура языка", переменные, объявленные во вложенном блоке, уничтожаются в конце этого блока и недоступны во внешнем блоке. Синтаксис объявления переменной приведен в листинге 11.11.

Листинг 11.11. Объявление переменной PL/pgSQL.

имя_переменной тип_данных [: = значение ]:

Таким образом, объявление состоит из имени и типа переменной (следующих именно в этом порядке) и завершается символом точки с запятой (;).

В листинге 11.12 приведены объявления переменных типов integer, varchar (число в круглых скобках обозначает максимальную длину строки в символах) и fIoat.

Листинг 11.12. Объявление переменных.

CREATE FUNCTION identifier (arguments) RETURNS type AS '
DECLARE
--Объявить числовую переменную типа integer
subjectjd integer:
--Объявить строковую переменную переменной длины.
book_title varchar(10);
--Объявить вещественную числовую переменную, book price float:
BEGIN
команды END:
' LANGUAGE 'plpgsql':

Объявление переменной также может содержать дополнительные модификаторы. Ключевое слово CONSTANT указывает на то, что вместо переменной определяется константа. Константы рассматриваются ниже в этом разделе.

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.