Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
44
Добавлен:
18.02.2016
Размер:
364.62 Кб
Скачать

Заголовок

Заголовок процедуры состоит из следующих разделов:

  1. Имя процедуры - обязательный элемент. Имя должно быть уникальным во всей базе данных. Пример:

CREATE PROCEDURE Proc1

  1. Входные параметры - необязательный элемент. Входные параметры, как и в процедурах Delphi, служат для передачи в процедуру каких-то значений из внешнего приложения, другой процедуры или триггера. При этом типы данных этих параметров могут быть любыми, определенными в SQL, кроме массивов. Параметры объявляются в виде списка " параметр тип ", несколько параметров разделяются запятой. Имена входных параметров процедуры не обязаны соответствовать именам параметров вызывающего приложения, но типы данных должны совпадать. Пример:

  2. CREATE PROCEDURE Proc2

(perem1 Integer, perem2 Float, perem3 Date)

  1. Выходные параметры - необязательный элемент. Выходные параметры служат для возврата в вызывающее приложение списка результирующих значений. Объявление выходных параметров (если они есть), начинается ключевым словом RETURNS, после которого в скобках параметры перечисляются в виде списка " параметр тип ". Пример:

  2. CREATE PROCEDURE Proc3

  3. (vhod_param1 Integer)

RETURNS (vihod_param1 Double, vihod_param2 Varchar(10))

  1. Ключевое слово AS - обязательный элемент, указывающий на окончание заголовка процедуры. Пример:

  2. CREATE PROCEDURE Proc4

  3. RETURNS (param char(50))

AS

Тело процедуры

Хранимые процедуры, как и процедуры в Delphi, могут иметь локальные переменные, или не иметь их. Если локальных переменных нет, тело процедуры представляет собой только составной оператор, заключенный в скобки BEGIN … END. Причем эти скобки обязательны, даже если в процедуре всего только один оператор.

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

SET TERM ^;

CREATE PROCEDURE MyProc (param1 Integer)

RETURNS (param2 Varchar(20), param3 Double Precision)

AS

DECLARE VARIABLE perem1 Varchar(10);

DECLARE VARIABLE perem2 Date;

DECLARE VARIABLE perem3 Integer;

BEGIN

END^

SET TERM ;^

В приведенном примере мы вначале переопределяем терминатор, после чего приступаем непосредственно к описанию процедуры. В процедуре имеется один входящий, и два выходящих параметра, а также объявлены три локальные переменные. Заметим, что ключевое слово DECLARE обязательно, а вот слово VARIABLE можно опустить. Если вы желаете, чтобы ваша база данных была совместима с ранними версиями InterBase, то VARIABLE лучше указывать. Завершается процедура новым терминатором "^", после чего мы переопределяем его на стандартный символ ";".

Блок кода процедуры

Блок кода процедуры начинается ключевым словом BEGIN, и оканчивается ключевым словом END. Блок кода может состоять из одного или нескольких операторов, а также содержать вложенные блоки кода BEGIN … END.

В блоке кода процедуры могут встречаться:

  • операторы присваивания, которые присваивают значения локальным переменным, входным или выходным параметрам (в отличие от оператора ":=" в Delphi, в SQL это просто знак равно "=");

  • операторы SELECT для выборки данных из таблиц. Результаты выборки могут присваиваться переменным или параметрам;

  • циклы, такие как FOR и WHILE ;

  • управляющие структуры IF ;

  • операторы EXECUTE PROCEDURE для вызова другой хранимой процедуры;

  • комментарии, заключенные в скобки /* … */ ;

  • символы сравнения >=, >, <=, <, <>, =, !< (не меньше), !> (не больше), != (не равно);

  • команды модификации таблиц, такие как INSERT, UPDATE или DELETE ;

  • и др.

Важно! Если в блоке кода локальные переменные используются внутри SQL-оператора (например, SELECT ), перед их именами следует ставить двоеточие. В других операторах этого делать не нужно.