Named Programmer-Defined Exception
توضیحات
گاهی نیاز است که برنامهنویس خود exception را تعریف کند که در پکیج استاندارد وجود ندارد.
دستور
در ادامه استفاده از name programmer-defined exception را در تابع و پروسیجر بررسی میکنیم:
| ۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳۱۴۱۵۱۶۱۷۱۸۱۹۲۰۲۱۲۲۲۳۲۴۲۵۲۶۲۷۲۸۲۹۳۰۳۱۳۲۳۳۳۴۳۵۳۶۳۷۳۸۳۹۴۰۴۱ | 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_datatype IS | 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]; |
.
مثال
در مثال زیر پروسیجری که از یک 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 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; |
در این مثال یک named programmer-defined exception به نام no_sales
تعریف کردهایم:
| ۱ | no_sales EXCEPTION; |
سپس شرط اجرایexception را گفتهایم :
| ۱۲ | IF sales_in = ۰ THEN RAISE no_sales; |
اگر متغیر sales_in دارای مقدار صفر باشد به قسمت exception میرود.
