Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с Oracle / 17 - Обработка ошибок на PL SQL.ppt
Скачиваний:
10
Добавлен:
28.06.2021
Размер:
270.34 Кб
Скачать

Исключения, определяемые программистом

PL/SQL позволяет программисту определять свои исклю- чения. При возбуждении и обработке они должны имено- ваться и объявляться аналогично другим элементам.

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

Количество товаров в заказе должно быть целым положи- тельным числом. Приложение должно об этом знать. Можно установить контроль, перехватывая значения, не являющиеся положительными целыми.

Пример исключения, определенного программистом (1)

SET SERVER OUTPUT ON ;

DECLARE

quantity1 NUMBER := -2 ; quantity2 NUMBER := 3 ; total NUMBER := 0 ;

quantity_must_positive EXCEPTION;

FUNCTION find_cost (quant NUMBER) RETURN NUMBER IS

BEGIN

IF (quant > 0) THEN RETURN (quant * 20); ELSE RAISE quantity_must_positive;

END IF;

Пример исключения, определенного программистом (2)

END find_cost; BEGIN

total := find_cost(quantity2);

total := total + find_cost(quantity1); EXCEPTION

WHEN quantity_must_positive THEN

dbms_output.put_line('Total until now: ' || total) ; dbms_output.put_line('Tried to use negative quantity ') ;

END;

/

Исключения, определяемые программистом

Исключение объявляется в секции объявлений аналогично любой другой объявленной там переменной.

Исключение действительно только для данного блока.

Поскольку функция find_cost определена внутри того же блока, в ней можно ссылаться на исключение.

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