пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Мова PL/SQL. Предопределені вилучення. Вилучення, що возбуждаються в оброблювачах. Перехід до оброблювача та з нього.

Исключение - это переменная в PL/SQL, возбуждаемся во время выполнения блока. В случае возбуждения исключения, блок всегда прекращает работу, но можно задать обработчик исключения для выполнения заключительных дейсвтий. 

Когда в СУБД при обработке PL/SQL инструкций возникают какие-то ошибки, СУБД выбрасывает исключение, прерывая основной поток обработки инструкций и переходя к обработчику ислючения. Причина ошибки определяется типом исключения, который внутренне представлен обычным числом.

В Oracle имеется набор предопределённых типов исключений, которые для удобства имеют имена. Например, исключение NO_DATA_FOUND (ORA-01403) возбуждается, когда оператор SELECT не возвращает ни одной строки.

Другие примеры: ZERO_DIVIDE (ORA_01476) – попытка деления на ноль, INVALID_NUMBER (ORA-01722) – попытка выполнения неверной операции на курсоре. Для каждого типа исключения нужен свой обработчик:

  • EXCEPTION
  •                    WHEN ТипИсключения
  •                    THEN
  •                     … ...
  • END;

Для обработки остальных типов можно использовать обработчик OTHERS (WHEN OTHERS) - но пользоваться им нужно крайне аккуратно, обычно его вызывают в последнюю очередь, поскольку, если сделать проверку на него - он сработает, но вот исключения, описанные под ним - не сработают.

В обработчиках исключений тоже можно выбрасывать исключения, используя оператор RAISE, однако обработчики блока этого же уровня его не обработают (только внешние).


21.01.2016; 21:15
хиты: 81
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь