Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по ОБД.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
5.9 Mб
Скачать

1.2 Виды хранимых процедур в InterBase

В InterBase существует два типа хранимых процедур:

1. Процедуры выбора данных – могут использоваться вместо таблиц в операторе SELECT.

2. Выполняемые процедуры – производят какие-либо действия с базой данных и не обязаны возвращать данные. Вызываются с помощью команды EXECUTE PROCEDURE.

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

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

Пример создания процедуры выбора данных:

-- возвращает перечень служащих, работающих в отделе,

-- который передается в качестве входного параметра:

CREATE PROCEDURE Test_Procedure (DeptNo CHAR(3))

RETURNS

(

Number INT, -- порядковый номер

EmpNo SMALLINT, -- идентификатор служащего

FirstName VARCHAR(15), -- имя LastName

VARCHAR(20) -- фамилия

) AS

BEGIN

Number = 0;

FOR

SELECT EMP_NO, FIRST_NAME, LAST_NAME

FROM Employee

WHERE DEPT_NO = :DeptNo

INTO :EmpNo, :FirstName, :LastName

DO

BEGIN

Number = Number + 1;

SUSPEND;

END

END;

Каждая процедура выбора данных должна обязательно содержать оператор SUSPEND, который передает набор выходных параметров в то место, откуда вызвали процедуру.

Пример вызова процедуры выбора данных:

SELECT * FROM Test_Procedure('000');

Пример создания выполняемой процедуры:

CREATE PROCEDURE MakeGenerator (GenName VARCHAR(31),

GenValue INTEGER )

AS

DECLARE VARIABLE Sql VARCHAR(256);

BEGIN

Sql = 'CREATE GENERATOR ' || GenName || ';';

EXECUTE STATEMENT Sql;

Sql = 'SET GENERATOR ' || GenName || ' TO ' ||

CAST(GenValue AS VARCHAR(10)) || ';';

EXECUTE STATEMENT Sql;

END;

Синтаксис оператора вызова процедуры:

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

[Параметр [, Параметр ...]]

[RETURNING_VALUES Параметр [, Параметр ...]];

Пример вызова выполняемой процедуры:

EXECUTE PROCEDURE MakeGenerator 'Test_Gen', 1;

2 Ход работы

Операции по созданию хранимых процедур с помощью выполнения сценария были изучены в ходе выполнения предыдущих лабораторных работ. Для создания хранимой процедуры с помощью программы "IB Expert" в диалоговом режиме необходимо выполнить следующие действия:

1. Подключиться к базе данных и выполнить команду главного меню "DatabaseNew Procedure". В результате откроется окно "Procedure" для создания процедуры (рисунок 9.1).

Рисунок 9.1 – Окно создания хранимой процедуры в режиме диалога

2. В этом окне в правом верхнем углу следует ввести имя процедуры (заменив имя "NEW_PROCEDURE").

3. При нажатой кнопке [Input Parameters] добавить входные параметры. Для этого находясь в сетке, расположенной в средней части окна, нажать клавишу [Insert] или [Стрелка вниз]. После этого ввести в новой строке имя входного параметра (на рисунке 9.1 имя входного параметра – "PARAM1") и с помощью показанного на рисунке 9.1 выпадающего списка выбрать его тип.

4. При нажатой кнопке [Output Parameters] таким же образом добавить выходные параметры.

5. При необходимости точно так же добавить локальные переменные (нажать для этого кнопку [Variables]).

6. В поле ввода, расположенном в нижней части окна, ввести тело процедуры.

7. Нажать кнопку [Compile Procedure] (Ctrl+F9).

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

Переключение между двумя режимами просмотра и редактирования хранимой процедуры, показанными на рисунке 9.2. и 9.3 производится кнопкой [Lazy mode on/off].

Рисунок 9.2 – Окно редактирования хранимой процедуры в режиме диалога

Рисунок 9.3 – Окно редактирования хранимой процедуры в обычном режиме