Funkcja Oracle Raise_Application_Error

Funkcja Oracle Raise Application Error



Jeśli chodzi o programowanie, zawsze jest miejsce na błędy, niezależnie od tego, czy jest to błąd aplikacji, czy błąd związany z użytkownikiem. Jako programista musisz przewidzieć, gdzie może wystąpić błąd, i podjąć działania z wyprzedzeniem. Proces ten, powszechnie znany jako obsługa błędów, umożliwia płynne działanie aplikacji nawet w przypadku wystąpienia błędu bez przedwczesnego kończenia pracy.

W tym artykule dowiesz się o jednej z procedur obsługi błędów w bazie danych Oracle, zwanej raise_application_error.

Procedura Oracle Raise_Application_Error

Raise_application_error w Oracle to procedura składowana, która umożliwia zgłaszanie komunikatów o błędach zdefiniowanych przez użytkownika.







Podczas pracy z bazą danych Oracle mogłeś natknąć się na komunikat o błędzie, taki jak ten poniżej:



[ 42000 ] [ 904 ] ORA-00904: 'CZEŚĆ' : błędny identyfikator

Ten typ błędu jest znany jako błąd aparatu bazy danych. Jest zdefiniowany w bazie danych Oracle i wywoływany, gdy wystąpi dany błąd.



Korzystając z procedury raise_application_error, Oracle pozwala nam definiować nasze niestandardowe komunikaty z określonym kodem błędu i komunikatem.





Może to być bardzo przydatne, gdy wystąpi określony błąd i chcesz ostrzec użytkownika opisowym komunikatem o błędzie. Oznacza to, że nie będziesz mieć nieobsługiwanych wyjątków błędów bez oświadczenia o tym, co się stało.

Składnia i parametry procedury

Poniższy fragment kodu określa składnię procedury raise_application_error:



podnieś_błąd_aplikacji (
numer_błędu,
wiadomość,
[ { PRAWDZIWE | FAŁSZYWE } ]
) ;

Procedura składa się z trzech głównych parametrów:

  1. Numer_błędu — ten parametr reprezentuje określoną wartość całkowitą, która jest mapowana na kod błędu. Wartość tego parametru zawiera się w przedziale od -20000 do -20999.
  2. Komunikat — jest to wartość ciągu oznaczająca zdefiniowany przez użytkownika komunikat o błędzie, który ma być wyświetlany użytkownikowi. Wartość parametru komunikatu ma długość do 70 bajtów.
  3. Keeperrorstack — ten parametr jest wartością logiczną, która określa, czy stos błędów powinien zostać zachowany. Domyślnie procedura nie obsługuje stosu błędów.

UWAGA: Zachowanie stosu błędów oznacza, że ​​błąd jest dodawany do serii poprzednich błędów. Jeśli stos nie zostanie zachowany, nowy komunikat o błędzie zastępuje wszystkie poprzednie błędy.

Oto kilka istotnych punktów, na które należy zwrócić uwagę w przypadku procedury raise_application_error:

  1. Silnik bazy danych automatycznie i natychmiast zatrzymuje wykonywanie bloku nadrzędnego po napotkaniu procedury składowanej raise_application_error.
  2. Procedura wymusza wycofanie wszystkich operacji wykonanych na parametrach OUT i IN OUT.
  3. Funkcja wycofywania procedury raise_application_error nie wpływa na globalne struktury danych, takie jak obiekty bazy danych. Jeśli jednak chcesz wykonać wycofanie na takich obiektach, musisz jawnie wywołać operację wycofania.

Przykład użycia procedury składowanej Raise_Application_Error

W tym przykładzie zademonstrujemy, jak użyć procedury raise_application_error przy użyciu schematu HR.

https://docs.oracle.com/cd/B13789_01/server.101/b10771/scripts003.htm

Rozważ następujący dostarczony kod źródłowy:

utwórz lub zamień procedurę check_commission (
emp_id liczba
)
jest
fname      PRACOWNICY.FIRST_NAME % rodzaj ;
pod adresem         PRACOWNICY. E-MAIL % rodzaj ;
sal        PRACOWNIKÓW.WYNAGRODZENIE % rodzaj ;
prowizja PRACOWNICY.COMMISSION_PCT % rodzaj ;
zaczynać
Wybierz IMIĘ, E-MAIL, WYNAGRODZENIE, PROWIZJA_PCT
na fname, em, sal, prowizja
od PRACOWNIKÓW
gdzie ID_PRACOWNIKA = id_pracownika;
jeśli prowizja jest zerowa następnie
podnieś_błąd_aplikacji ( - 20002 , „Napotkano zerowy procent prowizji!” || emp_id ) ;
koniec jeśli ;
wyjątek
kiedy inni następnie
DBMS_OUTPUT.PUT_LINE ( 'KODSQL:' || KOD SQL ) ;
DBMS_OUTPUT.PUT_LINE ( 'SQLERRM:' || SQLERRM ) ;
kończyć się;

Poprzedni przykład rozpoczyna się od utworzenia procedury, która akceptuje identyfikator pracownika. Następnie używamy pracownika do wybrania wartości spośród pracowników. Na koniec używamy instrukcji IF, aby sprawdzić, czy prowizja otrzymanego wiersza jest zerowa. Jeśli to prawda, zgłaszamy wyjątek.

Możemy wywołać procedurę z docelowym identyfikatorem pracownika:

zadzwoń check_commission ( 100 ) ;

Wynik :

KOD SQL -438
SQLERRM: SQL0438N Aplikacja zgłosiła błąd lub ostrzeżenie z tekstem diagnostycznym: „Napotkano zerową wartość procentową prowizji: SQLSTATE=UD030

Wniosek

W tym samouczku nauczyłeś się, jak używać procedury składowanej raise_application_error do zgłaszania niestandardowych komunikatów o błędach.