DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Инициирование исключительных ситуаций

Когда возникает ошибка, связанная с некоторой исключительной ситуа­цией, инициируется (устанавливается) эта исключительная ситуация. Иск­лючительные ситуации, определяемые пользователем, устанавливаются явно при помощи оператора RAISE, в то время как стандартные исключительные ситуации (или определенные пользователем исключительные ситуа­ции, связанные с ошибкой Oracle посредством прагмы EXCEPTION JDMIT) инициируются неявно при возникновении соответствующих ошибок Oracle. Если возникает ошибка Oracle, не связанная с исключительной ситуацией, тоже инициируется исключительная ситуация. Ее можно пе­рехватывать с помощью обработчика OTHERS (см. ниже раздел "Обра­ботчик исключительных ситуаций OTHERS"). Стандартные исключитель­ные ситуации при желании можно устанавливать также с помощью оператора RAISE. Усложним пример, приведенный в разделе "Исключи­тельные ситуации, определяемые пользователем":
При установлении исключительной ситуации управление программой сразу же передается разделу исключительных ситуаций блока. Если такого раздела нет, исключительная ситуация передается блоку (распространяется на блок), в который входит данный блок (см. ниже раздел "Распространение
исключительных ситуаций"). После передачи управления обработчику невозможно вернуться в выполняемый раздел блока (см. рис. 7.1) .
Стандартные ситуации инициируются автоматически при возникнове­нии соответствующей ошибки Oracle. Например, в этом блоке PL/SQL устанавливается исключительная ситуация DUP_VAL_ON_INDEX:
Исключительная ситуация устанавливается вследствие того, что стол­бец id таблицы students является первичным ключом, и поэтому он дол­жен быть уникальным. При попытке второго оператора INSERT ввести значение 20000 в этот столбец происходит ошибка:


 









jAntivirus