Jak omówiono we wprowadzeniu do obsługi wyjątków PL/SQL, istnieją trzy sposoby deklarowania wyjątków definiowanych przez użytkownika. Wśród tych trzech sposobów poznaliśmy już dwa pierwsze, które polegają na deklarowaniu wyjątku definiowanego przez użytkownika za pomocą
- Podnieś oświadczenie i
- Procedura Raise_Application_Error
Jedyny sposób, który pozostał do omówienia, to zadeklarowanie przez użytkownika definiowania wyjątków za pomocą funkcji PRAGMA EXCEPTION_INIT w Oracle Database.
Dlatego w tym samouczku dotyczącym PL/SQL nauczymy się, jak zadeklarować wyjątek PL/SQL zdefiniowany przez użytkownika w bazie danych Oracle za pomocą funkcji PRAGMA EXCEPTION_INIT.
Co to jest PRAGMA EXCEPTION_INIT?
Pragma Exception_Init to dwuczęściowa instrukcja, w której pierwsza część składa się ze słowa kluczowego PRAGMA, a druga część to wywołanie Exception_Init.
Słowo kluczowe PRAGMA
Pragma to dyrektywa kompilatora, która wskazuje, że instrukcje, po których następuje słowo kluczowe PRAGMA, są instrukcją dyrektywy kompilatora, co oznacza, że instrukcja zostanie przetworzona w czasie kompilacji, a nie w czasie wykonywania.
PRAGMA Exception_Init
Exception_init pomaga w skojarzeniu nazwy wyjątku z numerem błędu Oracle. Innymi słowy możemy powiedzieć, że używając Exception_Init możesz nazwać wyjątek.
Po co nazywać wyjątek?
Tak, istnieje sposób zadeklarowania wyjątku definiowanego przez użytkownika bez nazwy i to za pomocą procedury Raise_Exception_Error. Jest to rzeczywiście prosty i łatwy sposób, ale jak dowiedzieliśmy się w poprzednim samouczku, do obsługi wyjątków bez nazwy używamy obsługi wyjątków INNE.
Teraz pomyśl, że w swoim projekcie masz wiele wyjątków i to również bez nazwy. Aby obsłużyć wszystkie te wyjątki, masz jeden program obsługi wyjątków o nazwie INNE. W tym przypadku po wystąpieniu warunku wyjątku kompilator wyświetli stos błędów wygenerowany przez procedurę obsługi INNE.
Czy możesz sobie wyobrazić, jak trudno będzie prześledzić tę część twojego projektu, która powoduje błąd. Aby prześledzić tę część, musisz przejść przez każdą i każdą linię kodu. To będzie zwykła strata czasu.
Możesz zaoszczędzić wszystkie te marnujące czas wysiłki, po prostu nazywając wyjątek, w ten sposób możesz zaprojektować procedurę obsługi wyjątków specyficzną dla nazwy wyjątku, która będzie łatwa do śledzenia. To jest zaleta nazywania wyjątku.
Składnia Pragmy Exception_Init.
PRAGMA EXCEPTION_INIT (exception_name, error_number);
Przykład:zadeklaruj wyjątek zdefiniowany przez użytkownika przy użyciu 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; /
Szczegółowo wyjaśniłem ten przykład w moim samouczku wideo na moim kanale YouTube. Proszę o zapoznanie się z samouczkiem tam.
Dlaczego używać PRAGMA EXCEPTION_INIT z RAISE_APPLICATION_ERROR?
Chociaż użycie PRAGMA EXCEPTION_INIT z procedurą RAISE_APPLICATION_ERROR nie jest obowiązkowe, jest to jednak bardziej osobista preferencja niż zasada programowania. Jeśli chcesz wydrukować komunikat o błędzie z numerem błędu podobnym do standardowego sposobu wyświetlania błędu przez Oracle, najlepszą praktyką jest użycie PRAGMA EXCEPTION_INIT z procedurą RAISE_APPLICATION_ERROR.
Ale jeśli chcesz tylko wydrukować komunikat o błędzie, a nie numer błędu, możesz użyć PRAGMAEXCEPTION_INIT z instrukcją RAISE.
To jest samouczek PL/SQL dotyczący deklarowania wyjątku definiowanego przez użytkownika w Oracle Database przy użyciu PRAGMA EXCEPTION_INIT. Mam nadzieję, że nauczyłeś się czegoś nowego. Jeśli uważasz, że ten samouczek zawiera informacje, udostępnij go w swoich mediach społecznościowych. Dzięki i życzę miłego dnia!