Объявление переменных. Все переменные программного блока должны быть предварительно объявлены с ключевым словом declare

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

ПРИМЕЧАНИЕ. Как будет показано в разделе «Передача управления», в одной из команд - цикле FOR - предусмотрена возможность инициализации управляющей переменной. Переменную цикла FOR не нужно заранее объявлять в секции DECLARE того блока, в котором находится цикл. Таким образом, переменные цикла FOR составляют единственное исключение из правила, согласно которому все переменные должны объявляться в начале соответствующего блока.

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

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

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

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

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

CREATE FUNCTION identifier (arguments) RETURNS type AS '

DECLARE

-- Объявить числовую переменную типа integer.

subject_id integer;

-- Объявить строковую переменную переменной длины.

book_title varchar(10);

-- Объявить вещественную числовую переменную.

book price float;

BEGIN

команды;

END;

' LANGUAGE ‘plpgsql’ VOLATILE

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

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

Ключевое слово DEFAULT определяет значение по умолчанию для переменной. Вместо него можно воспользоваться оператором (:=), эффект будет тем же.

Ниже приведен расширенный синтаксис объявления переменной:

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

[ { DEFAULT |:= } значение ];

В листинге 6.7 приведены примеры объявлений целочисленной константы, равной 5, переменной со значением 10, которой не может быть присвоено псевдозначение NULL, и символьной переменной, содержащей символ 'а'.

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

CREATE OR REPLACE FUNCTION books.example_function()

RETURNS text AS

$BODY$

DECLARE

-- Объявление целочисленной константы,

-- инициализированной значением 5.

five CONSTANT integer:= 5;

-- Объявление целочисленной переменной,

-- инициализированной значением 10.

-- Переменной не может присваиваться NULL.

ten integer NOT NULL:= 10;

-- Объявление символьной переменной,

-- инициализированной значением 'а'.

letter char DEFAULT 'а';

BEGIN

-- Функция возвращает символ и прекращает работу.

return letter;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: