
- •3 Завдання до лабораторних робіт
- •3.1 Лабораторна робота № 1
- •1 Теоретические сведения
- •2 Ход работы
- •2.1 Создание базы данных
- •2.2 Регистрация базы данных
- •2.3 Подключение к базе данных
- •2.4 Удаление базы данных
- •2.5 Извлечение метаданных
- •2.6 Резервное копирование и восстановление
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.2 Лабораторна робота № 2
- •1 Теоретические сведения
- •1.1 Типы данных InterBase
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.3 Лабораторна робота № 3
- •1 Теоретические сведения
- •1.1 Таблицы (Tables)
- •1.2 Индексы
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.4 Лабораторная работа № 4
- •1 Теоретические сведения
- •1.2 Ограничение первичного ключа (Primary key)
- •1.2 Ограничения уникальности (Unique)
- •1.3 Ограничения внешнего ключа (Foreign keys)
- •1.4 Контрольные ограничения (Checks)
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.5 Лабораторная работа №5.
- •1 Теоретические сведения
- •1.1 Генераторы (Generators)
- •1.2 Бизнес-правила
- •1.3 Триггеры (Triggers)
- •2. Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.6 Лабораторная работа №6
- •1 Теоретические сведения
- •1.1 Добавление новых данных
- •1.2 Удаление существующих данных
- •1.3 Обновление существующих данных
- •2. Ход работы
- •3. Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.7 Лабораторная работа №7
- •1 Теоретические сведения
- •2. Ход работы
- •3. Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.8 Лабораторная работа №8
- •1 Теоретические сведения
- •1.1 Представления (Views)
- •1.2 Модифицируемые представления
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.9 Лабораторная работа №9
- •1 Теоретические сведения
- •1.1 Хранимые процедуры (Procedures)
- •1.2 Виды хранимых процедур в InterBase
- •2 Ход работы
- •3 Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.10 Лабораторная работа №10
- •1 Теоретические сведения
- •1.1 Функции пользователя (udFs)
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. Подключиться к базе данных и выполнить команду главного меню "DatabaseNew 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 – Окно редактирования хранимой процедуры в обычном режиме