В этом учебном материале вы узнаете, как использовать оператор WHEN OTHERS в Oracle/PLSQL c синтаксисом и примерами.
Описание
Оператор WHEN OTHERS используется для перехвата всех остальных исключительных ситуаций, которые не были обработаны встроенными исключительными ситуациями или исключительными ситуациями, определенные программистом.
Синтаксис
Рассмотрим синтаксис для оператора WHEN OTHERS в процедурах и функциях.
Синтаксис для процедур
[ (parameter [,parameter]) ]
IS
[declaration_section]
BEGIN
executable_section
EXCEPTION
WHEN exception_name1 THEN
[statements]
WHEN exception_name2 THEN
[statements]
WHEN exception_name_n THEN
[statements]
WHEN OTHERS THEN
[statements]
END [procedure_name];
Синтаксис для функций
[ (parameter [,parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]
BEGIN
executable_section
EXCEPTION
WHEN exception_name1 THEN
[statements]
WHEN exception_name2 THEN
[statements]
WHEN exception_name_n THEN
[statements]
WHEN OTHERS THEN
[statements]
END [function_name];
Пример процедуры, которая использует оператор WHEN OTHERS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
CREATE OR REPLACE PROCEDURE add_new_order (order_id_in IN NUMBER, sales_in IN NUMBER) IS no_sales EXCEPTION; BEGIN IF sales_in = 0 THEN RAISE no_sales; ELSE INSERT INTO orders (order_id, total_sales ) VALUES ( order_id_in, sales_in ); END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN raise_application_error (-20001,'You have tried to insert a duplicate order_id.'); WHEN no_sales THEN raise_application_error (-20001,'You must have sales in order to submit the order.'); WHEN OTHERS THEN raise_application_error (-20002,'An error has occurred inserting an order.'); END; |
В этом примере, если возникает исключительная ситуация, и не перехватывается DUP_VAL_ON_INDEX или no_sales, то она будет перехвачена оператором WHEN OTHERS.