КАТЕГОРИИ: Архитектура-(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. Подключиться к базе данных и выполнить команду главного меню "DatabaseNew 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; Просмотров: 521; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |