Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Объявляйте в заголовке:

* имя процедуры, которое обязательно и должно быть уникальным в базе данных, например:

CREATE PROCEDURE MyProc

* любые необязательные входные параметры (аргументы), требуемые в процедуре, с их типами данных. Список заключается в скобки, параметры отделяются друг от друга запятыми, например:

CREATE PROCEDURE MyProc (invarl integer, invar2 date)

* имя каждого аргумента должно быть уникальным в процедуре. Тип данных может быть любым стандартным типом данных SQL за исключением массива типов

данных.

Не требуется соответствия имен входных аргументов именам параметров в вызывающей программе;

* любые необязательные выходные параметры (аргументы), требуемые в процедуре, с их типами данных. Список следует за ключевым словом RETURNS. список заключается в скобки, параметры отделяются друг от друга запятыми, например:

CREATE PROCEDURE MyProc

(invar1 INTEGER, invar2 DATE)

RETURNS (outvar1 INTEGER, outvar2 VARCHAR(20), outvar3 DOUBLE PRECISION)

* имя каждого аргумента должно быть уникальным в процедуре. Тип данных может быть любым стандартным типом данных SQL за исключением массива типов данных;

* ключевое слово AS, которое обязательно:

CREATE PROCEDURE MyProc

(invar1INTEGER, invar2 DATE)

RETURNS(outvar1 INTEGER, outvar2 VARCFAR(20), outvar3 DOUBLE

PRECISION)

AS

Элементы тела

Синтаксис:

< тело-процедуры> = [<список-объявлений-переменных>] <составной-оператор>

Локальные переменные

Если вам нужно объявить локальные переменные, то это следует сделать далее. Каждое объявление завершается точкой с запятой. В версии 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. Здесь дело в личных предпочтениях.

Поделиться:
Популярные книги

Семья. Измена. Развод

Высоцкая Мария Николаевна
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Семья. Измена. Развод

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Камень Книга одиннадцатая

Минин Станислав
11. Камень
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Камень Книга одиннадцатая

Никто и звать никак

Ром Полина
Фантастика:
фэнтези
7.18
рейтинг книги
Никто и звать никак

Возвышение Меркурия. Книга 14

Кронос Александр
14. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 14

Идеальный мир для Лекаря 20

Сапфир Олег
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Сумеречный Стрелок 2

Карелин Сергей Витальевич
2. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 2

Сумеречный Стрелок 10

Карелин Сергей Витальевич
10. Сумеречный стрелок
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Сумеречный Стрелок 10