Содержание
- 2. План лекции Обработка исключений Предопределенные ИС Непредопределенные ИС Пользовательские ИС
- 3. Исключительные ситуации При выполнении блока PL/SQL могут возникнуть разные ошибки. Эти ошибки должны быть обработаны. Для
- 4. Обработка исключительных ситуаций В случае возбуждения исключительной ситуации блок всегда прекращает работу. Можно задать обработчик исключения
- 5. Синтаксис ИС Каждый обработчик исключения состоит из ключевого слова WHEN, задающего исключение, за которым следует последовательность
- 6. Необработанная в блоке ИС Необработанные в блоке ИС приводят к его аварийному завершению. В этом случае
- 7. Способы возбуждения ИС Явный – имеет место ошибка СУБД Oracle, исключение возбуждается автоматически. Примеры: - деление
- 8. Типы ИС
- 9. Предопределенные исключения
- 10. Пример предопределенных ИС DECLARE v_id emp.emp_id%TYPE; BEGIN SELECT emp_id INTO v_id -- должна возвращать 1 строку
- 11. Непредопределенные ИС Для перехвата непредопределенной ИС, возбуждаемой сервером, необходимо: 1. в декларативной секции блока: - объявить
- 13. Объявление непредопределенной ИС Для связывания ошибки Oracle с именем исключения, используется директива компилятора PRAGMA EXCEPTION_INIT. Синтаксис:
- 14. Пример непредопределенной ИС CREATE PROCEDURE del_dept(p_deptno number) IS e_emp_exist EXCEPTION; PRAGMA EXCEPTION_INIT(e_emp_exist, -2292); BEGIN DELETE FROM
- 15. Функции для перехвата ИС SQLCODE – возвращает числовой код ошибки. SQLERRM – возвращает сообщение, связанное с
- 16. Пример обработчика OTHERS DECLARE v_err_code NUMBER; v_err_msg VARCHAR2(200); BEGIN . . . EXCEPTION WHEN others THEN
- 17. PL/SQL позволяет определять и возбуждать собственные исключения. Для этого они должны быть объявлены в декларативной секции
- 18. Пример пользовательской ИС DECLARE e_error_dept EXCEPTION; -- объявление ИС BEGIN UPDATE dept SET dname=‘IT’ WHERE id=777;
- 19. Процедура RAISE_APPLICATION_ERROR Позволяет посылать собственные пользовательские сообщения об исключениях из хранимых программ. Возвращает пользователю информацию об
- 20. Синтаксис RAISE_APPLICATION_ERROR raise_application_error(ошибка, сообщение, {TRUE | FALSE}) Ошибка – номер исключения в диапазоне -20000…-20999 Сообщение –
- 21. Пример RAISE_APPLICATION_ERROR BEGIN . . . DELETE FROM emp WHERE empno = v_id; IF sql%notfound THEN
- 23. Скачать презентацию