Здавалка
Главная | Обратная связь

Исключения (Exceptions) и обработка ошибок



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

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

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

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

EXCEPTIONИмя;

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

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

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

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


 

Таблица 3

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


 

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

В этом разделе приведены некоторые из используемых при написании триггеров и хранимых процедур операторов, которые не были описаны выше. Для изучения полного перечня поддерживаемых операторов следует обратиться к [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<составной оператор>

Задание

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

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".


 

 

Ход работы

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

Для создания триггеров с помощью программы "IB Expert" в диалоговом режиме необходимо выполнить следующие действия:

1. Подключиться к базе данных.

2. Открыть окно с таблицей, для которой будет создаваться триггер.

3. Перейти на вкладку "Triggers" (рис. 19).

4. Нажать в этом окне правую кнопку мыши на одном из событий, для которого будет создаваться триггер.

5. Откроется контекстное меню, в котором надо выбрать команду "New Trigger".


 

 

Рис. 19. Вкладка "Triggers" окно просмотра таблицы


 

6. В результате откроется окно создания триггера (рис. 20 или 21), в котором достаточно лишь ввести тело триггера, а затем нажать кнопку [Compile Trigger] (Ctrl+F9).

 


 

Рис. 20. Окно создания триггера в обычном режиме


 

 

Рис. 21. Окно создания триггера в "ленивом" режиме


 

 

Переключение между двумя режимами просмотра и редактирования триггера, показанными на рис. 20 и 21 производится кнопкой [Lazy mode on/off].

Создание с помощью программы "IB Expert" в диалоговом режиме генераторов и исключений происходит следующим образом:

1. Открывается окно "Generators" либо "Exceptions". Для этого можно, например, выбрать команду главного меню "Database ® New Generator" или "Database ® New Exception".

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

3. После ввода данных необходимо нажать кнопку [Compile] (F9), которая приведет к автоматической генерации необходимых операторов и их выполнению.


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.