Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Элементы тела
Разделы на этой странице:
Элементы тела
Синтаксис:
< тело-процедуры> = [<список-объявлений-переменных>] <составной-оператор>
Локальные переменные
Если вам нужно объявить локальные переменные, то это следует сделать далее. Каждое объявление завершается точкой с запятой. В версии 1.5 переменные при их объявлении могут инициализироваться. Синтаксис:
<список-объявлений-переменных> =
DECLARE [VARIABLE] переменная тип-данных [{'=' | DEFAULT} значение];
[DECLARE [VARIABLE] переменная тип-данных; . . .]
Пример:
CREATE PROCEDURE MyProc (
invar1 INTEGER,
invar2 DATE)
RETURNS (
outvar1 INTEGER,
outvar2 VARCHAR(20),
outvar3 DOUBLE PRECISION)
AS
DECLARE VARIABLE localvar integer DEFAULT 0;
DECLARE VARIABLE anothervar DOUBLE PRECISION = 0.00;
! ! !
ПРИМЕЧАНИЕ. Ключевое слово VARIABLE необязательно в версии 1.5 и выше.
. ! .
Главный блок кода
Следом идет главный блок кода, обозначенный в описании синтаксиса как <составной-оператор>. Он начинается ключевым словом BEGIN и заканчивается ключевым словом END.
Синтаксис:
<составной-оператор> =
BEGIN
<составной-оператор>
[<составной-оператор> ...]
END <терминатор>
Все структуры <составной-оператор> состоят из одного оператора и/или других структур <составной-оператор>, которые могут включать другие вложенные структуры, например:
CREATE PROCEDURE MyProc (
invar1 INTEGER,
invar2 DATE)
RETURNS (
outvar1 INTEGER,
outvar2 VARCHAR(20),
outvar3 DOUBLE PRECISION)
AS
DECLARE VARIABLE localvar integer DEFAULT 0;
DECLARE VARIABLE anothervar DOUBLE PRECISION = 0.00;
BEGIN
< составной-оператор>
END &
Элементами в <составной-оператор> могут быть: любой одиночный оператор, блок операторов и вложенные блоки операторов, заключенные в операторные скобки BEGIN и END. Блоки могут включать:
* операторы присваивания, устанавливающие значения локальным переменным и входным/выходным параметрам;
* операторы SELECT для помещения значений столбцов в переменные. Операторы SELECT должны иметь предложение INTO в качестве последнего предложения и объявления соответствующих локальных переменных или выходных аргументов для каждого выбранного столбца;
* структуры циклов, такие как FOR SELECT ... DO и WHILE ... DO для выполнения условных или циклических задач;
* структуры ветвления с использованием IF ... THEN ... [ELSE];
* операторы EXECUTE PROCEDURE для вызова других процедур с необязательным предложением RETURNING_VALUES для получения значений переменных. Допустима рекурсия;
* операторы SUSPEND и EXIT, возвращающие управление и, возможно, значения вызвавшему приложению или модулю PSQL;
* комментарии для аннотирования кода процедуры;
* операторы EXCEPTION для возврата приложениям пользовательских сообщений об ошибках или для задания условий для обработчиков исключений;
* операторы WHEN для обработки особых или общих условий ошибок.
* операторы POST_EVENT для добавления в стек сообщений о событиях. Пример:
BEGIN
FOR SELECT COL1, COL2, COL3, C0L4
FROM TABLEA INTO :COL1, :COL2, :COL3 DO
BEGIN
<операторы>
END
<операторы>
END &
SET TERM ; &
COMMIT;
Обратите внимание на завершение всего объявления процедуры символом терминатора, ранее определенного оператором SET TERM. После текста тела процедуры символ терминатора устанавливается в значение по умолчанию точка с запятой. Так поступать следует не всегда. В скриптах DDL, где вы объявляете несколько модулей PSQL, вы можете сохранять альтернативный оператор текущим. Некоторые люди на практике используют альтернативный терминатор во всех своих скриптах, таким образом резервируя точку с запятой только для завершения оператора PSQL. Здесь дело в личных предпочтениях.
- Тела шаблонов
- Элементы процедур и триггеров
- 6.4. Рабочий лист Excel и его структурные элементы
- 4.4. Логические элементы и синтез логических схем
- 4.7 Структурные элементы SAN
- Вложение файлов в элементы списков
- Логические элементы
- 5.2. Основные приемы работы, элементы текстового редактора
- Правило 16. Группируйте связанные между собой элементы
- Элементы и
- Основные элементы меню Пуск
- Элементы xsl:choose, xsl:when, xsl:otherwise