- •Введение
- •1.5. Задание
- •1.6. Ход работы
- •1.6.1. Создание базы данных
- •1.6.2. Регистрация базы данных
- •1.6.3. Подключение к базе данных
- •1.6.4. Удаление базы данных
- •1.6.5. Извлечение метаданных
- •1.6.6. Резервное копирование и восстановление
- •1.7. Отчет о выполнении работы
- •1.8. Контрольные вопросы
- •2.4.2. Домены (Domains)
- •2.5. Задание
- •2.6. Ход работы
- •2.7. Отчет о выполнении работы
- •2.8. Контрольные вопросы
- •3.4.2. Индексы
- •3.5. Задание
- •3.6. Ход работы
- •3.7. Отчет о выполнении работы
- •3.8. Контрольные вопросы
- •4.4.1. Ограничение первичного ключа (Primary key)
- •4.4.2. Ограничения уникальности (Unique)
- •4.4.3. Ограничения внешнего ключа (Foreign keys)
- •4.4.4. Контрольные ограничения (Checks)
- •4.5. Задание
- •4.6. Ход работы
- •4.7. Отчет о выполнении работы
- •4.8. Контрольные вопросы
- •5.4.2. Бизнес-правила
- •5.4.3. Триггеры (Triggers)
- •5.4.4. Исключения (Exceptions) и обработка ошибок
- •5.6. Ход работы
- •5.7. Отчет о выполнении работы
- •5.8. Контрольные вопросы
- •6.4.2. Удаление существующих данных
- •6.4.3. Обновление существующих данных
- •6.5. Задание
- •6.6. Ход работы
- •6.7. Отчет о выполнении работы
- •6.8. Контрольные вопросы
- •7.5. Задание
- •7.6. Ход работы
- •7.7. Отчет о выполнении работы
- •7.8. Контрольные вопросы
- •8.4.2. Модифицируемые представления
- •8.5. Задание
- •8.6. Ход работы
- •8.7. Отчет о выполнении работы
- •8.8. Контрольные вопросы
- •9.4.2. Виды хранимых процедур в InterBase
- •Returns (
- •9.5. Задание
- •9.6. Ход работы
- •9.7. Отчет о выполнении работы
- •9.8. Контрольные вопросы
- •10.4.2. Создание динамической библиотеки с udf
- •Exports
- •Interface
- •10.4.4. Использование udf в базе данных
- •10.5. Задание
- •10.6. Ход работы
- •10.8. Контрольные вопросы
- •11.4.4. Права
-
5.4.4. Исключения (Exceptions) и обработка ошибок
Исключение – это определенная пользователем ошибка, которая имеет имя и связанный с ним текст сообщения.
Для создания исключения служит оператор:
-
CREATE EXCEPTION Имя 'Текст сообщения';
Для возбуждения исключения в теле триггера или хранимой процедуры служит оператор:
EXCEPTION Имя;
При возникновении исключения нормальный ход выполнения прерывается и InterBase ищет ближайший обработчик этого исключения в текущем блоке BEGIN … END. Если обработчика исключения в этом блоке нет, то In-terBase поднимается на уровень выше (к внешнему блоку BEGIN … END) и ищет обработчик там, и т.д. Если обработчик исключения найден, то выполняется его код и далее управление передается на первый оператор за обработчиком исключения. В случае если было сгенерировано исключение, которое никто не обрабатывает, это исключение передается в клиентское приложение. Чаще всего это приводит к выдаче пользователю сообщения о произошедшей ошибке.
Синтаксис оператора для обработки исключений внутри тела триггера или хранимой процедуры имеет следующий вид:
WHEN {<ошибка> [, <ошибка> ...] | ANY} DO <составной оператор> <ошибка> = {EXCEPTION Имя | SQLCODE Номер | GDSCODE Код_Ошибки}
Параметры, входящие в этот оператор, описаны в табл. 3.
Таблица 3
Описание параметров оператора обработки исключений
-
5.4.5. Операторы языка хранимых процедур и триггеров
В этом разделе приведены некоторые из используемых при написании триггеров и хранимых процедур операторов, которые не были описаны выше. Для изучения полного перечня поддерживаемых операторов следует обратиться к [9].
5.4.5.1. IF … THEN … ELSE
Для реализации сложных алгоритмов сервер InterBase поддерживает операторы ветвления.
-
IF (условие) THEN <составной оператор> [ELSE <составной оператор>]
-
5.4.5.2. FOR SELECT … DO
-
Представляет собой оператор выборки данных и обработки их в цикле по записям.
-
FOR <выражение select> DO <составной оператор>
-
5.4.5.3. WHILE … DO
-
Оператор цикла.
-
WHILE (условие) DO <составной оператор>
-
5.5. Задание
-
Лабораторную работу следует выполнять в следующем порядке:
-
1. Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР5".
-
2. Скопировать в эту папку файл сценария, созданный при выполнении лабораторной работы №4.
-
3. Открыть в приложении "IB Expert" этот сценарий.
-
4. Исправить текст комментариев и сделать, чтобы база данных теперь создавалась в папке "ЛР5".
-
5. Добавить в сценарий операторы создания генераторов, исключений и триггеров. Для каждого суррогатного первичного ключа должен быть создан соответствующий генератор и триггер.
-
6. Создать триггеры, реализующие ссылочную целостность, заменив одно ограничение внешнего ключа. Команды создания этого внешнего ключа из сценария не удалять, а добавить команду удаления этого ограничения перед созданием триггеров. Также добавить оператор создания индекса по полю бывшего внешнего ключа. Триггеры должны обеспечивать каскадное обновление и удаление зависимых данных, а также запрет ссылки на отсутствующую запись.
-
7. Создать не менее пяти триггеров, реализующих бизнес-правила в соответствии с выданным индивидуальным заданием. Для каждого триггера должны присутствовать комментарии, поясняющие выполняемые операции.
-
8. Выполнить сценарий и сохранить его в папке "ЛР5".
-
9. Зарегистрировать созданную базу данных в программе "IB Expert" и подключиться к ней.
-
10. Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestTriggers" и содержать десять полей разных типов с произвольными именами. При создании поля суррогатного первичного ключа сразу указать необходимость создания для него генератора и триггера. Добавить в диалоговом режиме к этой таблице три триггера выполняющих произвольные действия. Скопировать в отчет сценарий создания этой таблицы и триггеров, который сгенерирует "IB Expert".
-
11. Создать в папке "ЛР5" резервную копию базы данных.
-
12. Создать и сохранить в папке "ЛР5" файл с отчетом о выполнении лабораторной работы, который должен называться "Отчет.doc".