Както беше обсъдено във въвеждането на обработката на изключения PL/SQL, има три начина за деклариране на изключения, дефинирани от потребителя. Сред тези три начина вече научихме първите два начина, които декларират потребителско дефинирано изключение с помощта на
- Изявление за повишаване и
- Процедура Raise_Application_Error
Единственият начин, който остава да се обсъди сега, е да се декларират изключения, дефинирани от потребителя, като се използва функцията PRAGMA EXCEPTION_INIT в Oracle Database.
По този начин в този урок за PL/SQL ще научим как да декларираме изключение, дефинирано от потребителя за PL/SQL в Oracle Database, като използваме функцията PRAGMA EXCEPTION_INIT.
Какво е PRAGMA EXCEPTION_INIT?
Pragma Exception_Init е изявление от две части, където първата част е съставена от ключова дума PRAGMA, а втората част е извикването Exception_Init.
Ключова дума на PRAGMA
Прагмата е директива на компилатора, която показва, че изявленията, последвани от ключова дума PRAGMA, са оператор на директивата на компилатора, което означава, че операторът ще бъде обработен по време на компилиране, а не по време на изпълнение.
PRAGMA Exception_Init
Exception_init ви помага да свържете име на изключение с номер на грешка в Oracle. С други думи можем да кажем, че с помощта на Exception_Init можете да наименувате изключението.
Защо да посочите изключението?
Да, има начин за деклариране на потребителско дефинирано изключение без името и това е чрез използване на процедура Raise_Exception_Error. Това наистина е прост и лесен начин, но както научихме в последния урок, че за обработка на изключения без име използваме ДРУГИ манипулатор на изключения.
Сега помислете, че във вашия проект имате множество изключения и това също без име. За да обработвате всички тези изключения, имате един манипулатор на изключения с име ДРУГИ. В този случай при възникване на условие за изключение компилаторът ще покаже стека с грешки, произведен от ДРУГИЯ манипулатор.
Можете ли да си представите колко трудно ще бъде да проследите тази част от вашия проект, която причинява грешката. За да проследите тази част, трябва да преминете през всеки ред от вашия код. Това ще бъде просто загуба на време.
Можете да спестите всички тези усилия, които губите време, само като наименувате изключението, по този начин можете да проектирате манипулатор на изключение, специфичен за името на вашето изключение, който ще бъде лесно проследим. Това е предимството на именуването на изключението.
Синтаксис на Pragma Exception_Init.
PRAGMA EXCEPTION_INIT (exception_name, error_number);
Пример:Декларирайте дефинирано от потребител изключение с помощта на Pragma Exception_Init
DECLARE ex_age EXCEPTION; age NUMBER := 17; PRAGMA EXCEPTION_INIT(ex_age, -20008); BEGIN IF age<18 THEN RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!'); END IF; DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?'); EXCEPTION WHEN ex_age THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; /
Обясних подробно този пример в моя видеоурок в моя канал в YouTube. Ще ви помоля да разгледате урока там.
Защо да използвате PRAGMA EXCEPTION_INIT с RAISE_APPLICATION_ERROR?
Въпреки че не е задължително да се използва PRAGMA EXCEPTION_INIT с процедура RAISE_APPLICATION_ERROR, това е по-скоро лично предпочитание, отколкото правило за програмиране. Ако искате да отпечатате съобщение за грешка с номер на грешка като стандартния начин на Oracle за показване на грешка, тогава най-добрата практика е да използвате PRAGMA EXCEPTION_INIT с процедура RAISE_APPLICATION_ERROR.
Но ако просто искате да отпечатате съобщението за грешка, а не номера на грешката, тогава можете да използвате PRAGMAEXCEPTION_INIT с оператор RAISE.
Това е урокът за PL/SQL как да декларирате изключение, дефинирано от потребителя в Oracle Database, използвайки PRAGMA EXCEPTION_INIT. Надявам се, че сте научили нещо ново. Ако намирате този урок за информативен, споделете го във вашите социални медии. Благодаря и приятен ден!