Исключения (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 Все права принадлежат авторам размещенных материалов.
|