Объявление переменных. Все переменные программного блока должны быть предварительно объявлены с ключевым словом 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
Дата добавления: 2015-02-03; просмотров: 891;