sql >> Databáze >  >> RDS >> Oracle

Jak deklarovat uživatelsky definovanou výjimku pomocí proměnné výjimky v databázi Oracle

V Úvodu do PL/SQL výjimek jsme se dozvěděli, že existují tři způsoby, jak deklarovat uživatelem definované výjimky v databázi Oracle. V tomto tutoriálu prozkoumáme první způsob a naučíme se, jak deklarovat uživatelsky definovanou výjimku pomocí proměnné datového typu Exception.

Deklarace uživatelem definované výjimky pomocí proměnné Exception je proces tří kroků. Tyto tři kroky jsou –

  1. Deklarujte proměnnou datového typu výjimky – Tato proměnná ponese veškerou zátěž na svá bedra.
  2. Raise the Exception – Toto je část, kde říkáte kompilátoru o podmínce, která spustí výjimku.
  3. Ošetřete výjimku – Toto je poslední sekce, kde specifikujete, co se stane, když se spustí chyba, kterou jste vyvolali.

V tomto tutoriálu PL/SQL vám vysvětlím každý z těchto tří kroků pomocí kódu PL/SQL.

Pro demonstrační účely napíšu kód, který v operaci dělení zkontroluje, zda je dělitel nulový nebo ne. Pokud je nula, dojde k chybě a zobrazí se uživateli, jinak se na výstupní obrazovku vrátí skutečná hodnota, která je výsledkem aritmetiky dělení.

Krok 1:Deklarujte proměnnou datového typu Exception

Proměnnou Exception mám na mysli proměnnou s datovým typem Exception. Jako každou jinou proměnnou PL/SQL můžete deklarovat proměnnou Exception v sekci deklarace anonymního i pojmenovaného bloku PL/SQL. Tato proměnná výjimky pak bude fungovat jako uživatelsky definovaná výjimka pro váš kód.

DECLARE
  var_dividend NUMBER := 24;
  var_divisor NUMBER := 0;
  var_result NUMBER;
  ex_DivZero EXCEPTION;

V této sekci deklarace máme 4 proměnné. Mezi těmito 4 proměnnými jsou první 3 normální proměnné datového typu Number a 4, která je ex_DivZero, jsou speciální proměnná datového typu EXCEPTION. Tato proměnná se stane naší uživatelsky definovanou výjimkou pro tento program.

Krok 2:Zvyšte výjimku

Dalším krokem po deklaraci proměnné Exception je vyvolání výjimky. Pro vyvolání výjimky v PL/SQL používáme příkaz Raise.

Příkaz Raise je speciální druh příkazu PL/SQL, který mění normální tok provádění kódu. Jakmile kompilátor narazí na podmínku zvýšení, přenese řízení na obsluhu výjimky.

BEGIN
  IF var_divisor = 0 THEN
    RAISE ex_DivZero;
  END IF;

Zde je podmínka zvýšení doprovázena podmínkou IF-THEN. Pomocí toho se můžeme vyhnout nechtěným přepnutím během řídicího toku programu. Pomocí podmínky If zajišťujeme, že tato chyba se projeví pouze tehdy, když je dělitel roven 0.

var_result := var_dividend/var_divisor;
  DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);

Po napsání logiky pro vyvolání chyby můžete napsat své další spustitelné příkazy kódu, stejně jako jsme to udělali zde. Po příkazu Raise provádíme aritmetiku operace dělení a ukládáme výsledek do proměnné var_result a také jej zobrazujeme zpět jako výstup pomocí příkazu DBMS OUTPUT.

Krok 3:Zpracování výjimky

To je hlavní část kódu. Zde napíšeme logiku pro naši uživatelsky definovanou výjimku a řekneme kompilátoru, co by měl udělat, pokud a kdy k chybě dojde.

EXCEPTION WHEN ex_DivZero THEN
    DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
END;
/

Zde máme obsluhu výjimky pro proměnnou ex_DivZero. V sekci zpracování výjimek máme příkaz DBMS OUTPUT, který se zobrazí, když uživatel definuje chybu, která je ex_DivZero.

Nyní seskupme všechny tyto kusy kódů dohromady.

Chyba dělení nulou pomocí uživatelem definované výjimky PL/SQL v databázi 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;
/

Před spuštěním tohoto programu se ujistěte, že máte zapnutý SERVEROUTPUT, jinak neuvidíte výsledek.

Stejně jako v kroku 1 nastavíme hodnotu dělitele na nulu, což zase zvýší uživatelem definovanou chybu ex_DivZero, protože při kompilaci výše uvedeného kódu uvidíte řetězec „Chyba chyby – váš dělitel je nula“ stejný, jaký jsme zadali v našem obslužném programu výjimek (krok 3).

Toto je výukový program PL/SQL o tom, jak deklarovat uživatelsky definovanou výjimku pomocí proměnné datového typu Exception. Doufám, že se vám líbilo a dozvěděli jste se něco nového. Pokud ano, sdílejte tento blog na svých sociálních sítích a pomozte ostatním v učení spolu se mnou a mým kanálem. Děkuji a přeji hezký den!


  1. Reprezentace dat, časů a intervalů v PostgreSQL

  2. MariaDB BENCHMARK() Vysvětleno

  3. Jak uložit hodnoty NULL do polí data a času v MySQL?

  4. Příklady převodu „čas“ na „datum a čas“ v SQL Server (T-SQL)