Здавалка
Главная | Обратная связь

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



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

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

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

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


 

 

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

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

 


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

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

 

CREATE PROCEDURETest_Procedure (DeptNo CHAR(3))

RETURNS (

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

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

FirstName VARCHAR(15), -- имя

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

AS

BEGIN

Number = 0;

FOR

SELECTEMP_NO, FIRST_NAME, LAST_NAME

FROMEmployee

WHEREDEPT_NO = :DeptNo

INTO:EmpNo, :FirstName, :LastName

DO

BEGIN

Number = Number + 1;

SUSPEND;

END

END;


 

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

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


SELECT * FROMTest_Procedure('000');

 

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

CREATE PROCEDUREMakeGenerator (

GenName VARCHAR(31),

GenValue INTEGER ) AS

DECLARE VARIABLESql VARCHAR(256);

BEGIN

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

EXECUTE STATEMENTSql;

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

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

EXECUTE STATEMENTSql;

END;

 

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

 

EXECUTE PROCEDUREИмяПроцедуры [Параметр[,Параметр ...]]

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

 

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

 

EXECUTE PROCEDUREMakeGenerator 'Test_Gen', 1;

 

Задание

Лабораторную работу следует выполнять в следующем порядке:

1. Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР9".

2. Скопировать в эту папку файл сценария, созданный при выполнении предыдущей лабораторной работы.

3. Открыть в приложении "IB Expert" этот сценарий.

4. Исправить текст комментариев и сделать, чтобы база данных теперь создавалась в папке "ЛР9".

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

6. Выполнить сценарий и сохранить его в папке "ЛР9".

7. Зарегистрировать созданную базу данных в программе "IB Expert" и подключиться к ней.


8. Создать в своей базе данных по одной хранимой процедуре каждого вида в диалоговом режиме. Они должны называться "TestProcedure1" и "TestProcedure2" и иметь входные и выходные параметры. Скопировать в отчет сценарий создания этих процедур, который сгенерирует "IB Expert".

9. Выполнить в окне "SQL Editor" по одному запросу с каждой созданной хранимой процедурой. Поместить выполненные запросы в отчет, добавив комментарии и сведения о результате их выполнения.

10. Создать в папке "ЛР9" резервную копию базы данных.

11. Создать и сохранить в папке "ЛР9" файл с отчетом о выполнении лабораторной работы, который должен называться "Отчет.doc".

Ход работы

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

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

 

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


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


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

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

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

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

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

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

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


 

 

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


 

 

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


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.