We wprowadzeniu do wyjątków PL/SQL dowiedzieliśmy się, że istnieją trzy sposoby deklarowania wyjątków definiowanych przez użytkownika w Oracle Database. W tym samouczku zbadamy pierwszy sposób i nauczymy się deklarować wyjątek definiowany przez użytkownika przy użyciu zmiennej typu danych Exception.
Deklarowanie wyjątku zdefiniowanego przez użytkownika przy użyciu zmiennej Exception to proces składający się z trzech kroków. Te trzy kroki to –
- Zadeklaruj zmienną typu danych wyjątku – Ta zmienna weźmie cały ciężar na swoje barki.
- Zgłoś wyjątek – To jest część, w której mówisz kompilatorowi o warunku, który wywoła wyjątek.
- Obsługuj wyjątek – To jest ostatnia sekcja, w której określasz, co się stanie, gdy wywołany zostanie błąd.
W tym samouczku dotyczącym PL/SQL wyjaśnię każdy z tych trzech kroków za pomocą kodu PL/SQL.
W celach demonstracyjnych napiszę kod, który w operacji dzielenia sprawdzi, czy dzielnik ma wartość zero, czy nie. Jeśli wynosi zero, wystąpi błąd i zostanie wyświetlony użytkownikowi, w przeciwnym razie na ekranie wyjściowym zostanie zwrócona aktualna wartość, która jest wynikiem arytmetyki dzielenia.
Krok 1:Zadeklaruj zmienną typu danych Wyjątek
Przez zmienną Exception rozumiem zmienną z typem danych Exception. Jak każda inna zmienna PL/SQL, możesz zadeklarować zmienną Exception w sekcji deklaracji bloku anonimowego, jak również o nazwie PL/SQL. Ta zmienna wyjątku będzie wtedy działać jako wyjątek zdefiniowany przez użytkownika dla Twojego kodu.
DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION;
W tej sekcji deklaracji mamy 4 zmienne. Wśród tych 4 zmiennych, pierwsze 3 to normalne zmienne typu danych Number, a 4 to ex_DivZero to specjalna zmienna typu danych EXCEPTION. Ta zmienna stanie się naszym wyjątkiem definiowanym przez użytkownika dla tego programu.
Krok 2:Zgłoś wyjątek
Następnym krokiem po zadeklarowaniu zmiennej Exception jest zgłoszenie wyjątku. Aby zgłosić wyjątek w PL/SQL, używamy instrukcji Raise.
Instrukcja Raise jest specjalnym rodzajem instrukcji PL/SQL, która zmienia normalny przebieg wykonywania kodu. Gdy tylko kompilator napotka warunek podniesienia, przekazuje kontrolę do obsługi wyjątków.
BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF;
Tutaj warunku podbicia towarzyszy warunek JEŻELI-TO. Dzięki temu możemy uniknąć niechcianych przełączeń podczas przebiegu sterowania programem. Używając Warunku If upewniamy się, że ten błąd zadziała tylko wtedy, gdy dzielnik będzie równy 0.
var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
Po napisaniu logiki zgłaszania błędu możesz napisać swoje inne wykonywalne instrukcje kodu, tak jak zrobiliśmy to tutaj. Po instrukcji Raise wykonujemy arytmetykę operacji dzielenia i zapisujemy wynik w zmiennej var_result, a także wyświetlamy go z powrotem jako wynik za pomocą instrukcji DBMS OUTPUT.
Krok 3:Obsługa wyjątku
To jest główna sekcja kodu. Tutaj piszemy logikę dla naszego wyjątku zdefiniowanego przez użytkownika i mówimy kompilatorowi, co powinien zrobić, jeśli i kiedy wystąpi ten błąd.
EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Tutaj mamy obsługę wyjątków dla zmiennej ex_DivZero. W sekcji obsługi wyjątków mamy instrukcję DBMS OUTPUT, która zostanie wyświetlona, gdy nasz użytkownik zdefiniuje błąd ex_DivZero.
Teraz zgrupujmy wszystkie te fragmenty kodów.
Podziel przez zero błędu przy użyciu wyjątku zdefiniowanego przez użytkownika PL/SQL w bazie danych Oracle
SET SERVEROUTPUT ON; DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION; BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF; var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result); EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Przed uruchomieniem tego programu upewnij się, że ustawiłeś WYJŚCIE SERWERA, w przeciwnym razie nie będziesz mógł zobaczyć wyniku.
Podobnie jak w kroku 1 ustawiamy wartość dzielnika na zero, co z kolei spowoduje zgłoszenie błędu zdefiniowanego przez użytkownika ex_DivZero dlatego podczas kompilacji powyższego kodu zobaczysz ciąg „Błąd błędu – Twój dzielnik to zero” ten sam, który podaliśmy w naszym module obsługi wyjątków (krok 3).
To jest samouczek PL/SQL dotyczący deklarowania wyjątku zdefiniowanego przez użytkownika przy użyciu zmiennej typu danych Exception. Mam nadzieję, że podobało Ci się i nauczyłeś czegoś nowego. Jeśli tak, udostępnij tego bloga w swoich mediach społecznościowych i pomóż innym w nauce razem ze mną i moim kanałem. Dzięki i życzę miłego dnia!