Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zadeklarować wyjątek zdefiniowany przez użytkownika przy użyciu zmiennej wyjątku w bazie danych Oracle

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 –

  1. Zadeklaruj zmienną typu danych wyjątku – Ta zmienna weźmie cały ciężar na swoje barki.
  2. Zgłoś wyjątek – To jest część, w której mówisz kompilatorowi o warunku, który wywoła wyjątek.
  3. 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!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle - konwertuj wiele formatów daty na jedną sformatowaną datę

  2. Jak utworzyć użytkownika w Oracle 11g i przyznać uprawnienia

  3. Oracle ODP.NET wersja agnostyczna alternatywa

  4. Oracle ORA-01008:nie wszystkie zmienne powiązane Błąd z parametrami

  5. PARTITION BY z i bez KEEP w Oracle