Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 04 Лекция 1 (6).doc
Скачиваний:
1
Добавлен:
13.11.2019
Размер:
160.77 Кб
Скачать

6.6.2. Создание хранимой процедуры.

Хранимая процедура создается оператором

CREATE PROCEDURE ИмяПроцедуры

[(входной_параметр тип_данных [, входной_параметр тип_данных... ])]

[RETURNS

(выходной_параметр тип_данных [, выходной_параметр тип_данных ...])] AS

<тело процедуры>;

Входные параметры служат для передачи в процедуру значений из вызывающего приложения. Изменять значения входных параметров в теле процедуры бессмысленно: эти изменения будут забыты после окончания работы процедуры.

Выходные параметры служат для возврата результирующих значений. Значения выходных параметров устанавливаются в теле процедуры и после окончания ее работы передаются в вызывающее приложение.

И входные, и выходные параметры могут быть опущены, если в них нет необходимости.

Тело процедуры имеет формат

[<объявление локальных переменных процедуры>]

BEGIN

< оператор>

[<оператор> ...]

END

Пример. Хранимая процедура FIND_AUTHOR_NAME возвращает в выходном параметре IN_AUTHOR_NAME имя автора по его коду – IN_AUTHOR_CODE:

CREATE PROCEDURE FindAuthorName

(InAuthorCode INTEGER)

RETURNS(InAuthorName CHAR(30))

AS

BEGIN

SELECT Name

FROM BookAuthors

WHERE Code = : InAuthorCode

INTO : InAuthorName;

SUSPEND;

END

Заметим, что в приведенной процедуре за ненадобностью отсутствует определение локальных переменных. С оператором SELECT мы познакомимся позднее.

6.6.3. Алгоритмический язык хранимых процедур.

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

Рассмотрим конструкции алгоритмического языка хранимых процедур и триггеров.

Объявление локальных переменных. Локальные переменные, если они определены в процедуре, имеют срок жизни от начала выполнения процедуры и до ее окончания. Вне процедуры такие локальные переменные неизвестны и попытка обращения к ним вызовет ошибку. Локальные переменные используют для хранения промежуточных значений.

Формат объявления локальных переменных:

DECLARE VARIABLE <имя переменной > <тип данных>;

В качестве типа данных могут использоваться типы данных, стандартно определенные в InterBase.

Оператор присваивания. Оператор присваивания служит для занесения значений в переменные. Его формат:

Имя переменной = выражение;

где в качестве выражения могут выступать переменные, арифметические и строковые выражения, в которых можно использовать встроенные функции, функции, определенные пользователем, а также генераторы. Пример:

РОК = "Покупатель не указан";

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

Под простым оператором понимается единичное разрешенное действие, например:

РОК = "Покупатель не указан";

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

Оператор IF ... THEN ... ELSE. Условный оператор IF ... THEN .. . ELSE имеет формат

IF (<условие>) THEN

<оператор 1>

[ELSE

<оператор 2>]

В случае, если условие истинно, выполняется оператор 1, если ложно - оператор 2.

Оператор SELECT. Оператор SELECT используется в хранимой процедуре для выдачи единичной сроки. По сравнению с синтаксисом обычного оператора SELECT, в процедурный оператор добавлено предложение