WHEN OTHERS clause
توضیحات
زمانی که exception اتفاق افتاده است ولی هیچکدام از exceptionهای تعریف شده توسط برنامهنویس یا اوراکل نیست میتوان از دستور کلی when others استفاده کرد.
دستور
اکنون به دستور استفاده when others در تابع و پروسیجر میپردازیم:
| ۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳۱۴۱۵۱۶۱۷۱۸۱۹۲۰۲۱۲۲۲۳۲۴۲۵۲۶۲۷۲۸۲۹۳۰۳۱۳۲۳۳۳۴۳۵۳۶۳۷۳۸۳۹۴۰۴۱۴۲۴۳۴۴۴۵ | CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]IS [declaration_section] BEGIN executable_section EXCEPTION WHEN exception_name۱ THEN [statements] WHEN exception_name۲ THEN [statements] WHEN exception_name_n THEN [statements] WHEN OTHERS THEN [statements] END [procedure_name];CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatypeIS | AS [declaration_section] BEGIN executable_section EXCEPTION WHEN exception_name۱ THEN [statements] WHEN exception_name۲ THEN [statements] WHEN exception_name_n THEN [statements] WHEN OTHERS THEN [statements] END [function_name]; |
.
مثال
در مثال زیر پروسیجری که از یک named programmer-defined exception استفاده کرده است را مشاهده میکنیم:
| ۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳۱۴۱۵۱۶۱۷۱۸۱۹۲۰۲۱۲۲۲۳۲۴۲۵ | CREATE OR REPLACE PROCEDURE add_new_order (order_id_in IN NUMBER, sales_in IN NUMBER)IS no_sales EXCEPTION; BEGIN IF sales_in = ۰ 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 (-۲۰۰۰۱,\'You have tried to insert a duplicate order_id.\'); WHEN no_sales THEN raise_application_error (-۲۰۰۰۱,\'You must have sales in order to submit the order.\'); WHEN OTHERS THEN raise_application_error (-۲۰۰۰۲,\'An error has occurred inserting an order.\'); END; |
