Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными 2.doc
Скачиваний:
14
Добавлен:
07.11.2018
Размер:
2.08 Mб
Скачать
    1. 5.4.4. Исключения (Exceptions) и обработка ошибок

Исключение – это определенная пользователем ошибка, которая имеет имя и связанный с ним текст сообщения.

Для создания исключения служит оператор:

  1. CREATE EXCEPTION Имя 'Текст сообщения';

Для возбуждения исключения в теле триггера или хранимой процедуры служит оператор:

EXCEPTION Имя;

При возникновении исключения нормальный ход выполнения прерывается и InterBase ищет ближайший обработчик этого исключения в текущем блоке BEGIN … END. Если обработчика исключения в этом блоке нет, то In-terBase поднимается на уровень выше (к внешнему блоку BEGIN … END) и ищет обработчик там, и т.д. Если обработчик исключения найден, то выполняется его код и далее управление передается на первый оператор за обработчиком исключения. В случае если было сгенерировано исключение, которое никто не обрабатывает, это исключение передается в клиентское приложение. Чаще всего это приводит к выдаче пользователю сообщения о произошедшей ошибке.

Синтаксис оператора для обработки исключений внутри тела триггера или хранимой процедуры имеет следующий вид:

WHEN {<ошибка> [, <ошибка> ...] | ANY} DO <составной оператор> <ошибка> = {EXCEPTION Имя | SQLCODE Номер | GDSCODE Код_Ошибки}

Параметры, входящие в этот оператор, описаны в табл. 3.

Таблица 3

Описание параметров оператора обработки исключений

    1. 5.4.5. Операторы языка хранимых процедур и триггеров

В этом разделе приведены некоторые из используемых при написании триггеров и хранимых процедур операторов, которые не были описаны выше. Для изучения полного перечня поддерживаемых операторов следует обратиться к [9].

5.4.5.1. IF … THEN … ELSE

Для реализации сложных алгоритмов сервер InterBase поддерживает операторы ветвления.

  1. IF (условие) THEN <составной оператор> [ELSE <составной оператор>]

    1. 5.4.5.2. FOR SELECT … DO

Представляет собой оператор выборки данных и обработки их в цикле по записям.

  1. FOR <выражение select> DO <составной оператор>

    1. 5.4.5.3. WHILE … DO

Оператор цикла.

  1. WHILE (условие) DO <составной оператор>

    1. 5.5. Задание

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

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

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

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

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

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

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

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

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

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

    7. 10. Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestTriggers" и содержать десять полей разных типов с произвольными именами. При создании поля суррогатного первичного ключа сразу указать необходимость создания для него генератора и триггера. Добавить в диалоговом режиме к этой таблице три триггера выполняющих произвольные действия. Скопировать в отчет сценарий создания этой таблицы и триггеров, который сгенерирует "IB Expert".

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

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