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

В этом учебном материале вы узнаете, как использовать исключительные ситуации, определенные программистом в Oracle/PLSQL c синтаксисом и примерами.

Описание

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

Синтаксис

Рассмотрим синтаксис исключительных ситуаций определенных программистом в процедуре и функции.

Синтаксис для процедур

CREATE [OR REPLACE] PROCEDURE procedure_name
[ (parameter [,parameter]) ]
IS
[declaration_section]exception_name EXCEPTION;

BEGIN
executable_section
RAISE exception_name;

EXCEPTION
WHEN exception_name THEN
[statements]

WHEN OTHERS THEN
[statements]

END [procedure_name];

Синтаксис для функций

CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [,parameter]) ]
RETURN return_datatypeIS | AS
[declaration_section]

exception_name EXCEPTION;

BEGIN
executable_section

RAISE exception_name;

EXCEPTION
WHEN exception_name THEN
[statements]

WHEN OTHERS THEN
[statements]

END [function_name];

Пример

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

В этом примере объявили исключительную ситуацию no_sales объявленную следующим кодом:

no_sales EXCEPTION;

Вызываем исключение в выполняемой части кода:

IF sales_in = 0 THEN
RAISE no_sales;

Теперь, если переменная sales_in содержит нуль, то наш выполнение кода перейдет к исключительной ситуации no_sales.

Наконец, мы указываем нашей процедуре, что делать, когда исключительная ситуация no_sales включается в оператор WHEN:

WHEN no_sales THEN
raise_application_error (-20001,'У вас должны быть продажи по заказу, для закрытия заказа.');

Мы также используем оператор WHEN OTHERS для перехвата всех остальных исключений:

WHEN OTHERS THEN
raise_application_error (-20002,'Произошла ошибка при добавлении заказа.');