Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Задание

BEGIN

END

BEGIN

DO

FOR

BEGIN

AS

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

END

BEGIN

<составной оператор>

[<составной оператор>...]

<составной оператор> = <блок> | Оператор;

<тип данных> = один из типов данных InterBase

Оператор – любой одиночный оператор языка хранимых процедур и триггеров InterBase.

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

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

1. Производительность – перенос на сервер часто используемых действий приводит к существенному повышению производительности.

2. Многократное использование кода – части приложения, перенесенные на сервер, могут использоваться любыми другими приложениями, имеющими доступ к серверу.


 

 

В 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 ) -- фамилия )

Number = 0;

SELECT EMP_NO, FIRST_NAME, LAST_NAME

FROM Employee

WHERE DEPT_NO =:DeptNo

INTO:EmpNo,:FirstName,:LastName

Number = Number + 1;

SUSPEND;

END;


 

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

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


SELECT * FROM Test_Procedure ( ' 000 ' );

 

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

CREATE PROCEDURE MakeGenerator (

GenName VARCHAR( 31 ),

GenValue INTEGER) AS

DECLARE VARIABLE Sql VARCHAR( 256 );

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;

 

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

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-04-29; Просмотров: 519; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.