sql >> Databasteknik >  >> RDS >> Oracle

Hur man deklarerar användardefinierat undantag med hjälp av en undantagsvariabel i Oracle-databasen

I introduktionen till PL/SQL-undantag lärde vi oss att det finns tre sätt att deklarera användardefinierade undantag i Oracle Database. I den här handledningen ska vi utforska det första sättet och lära oss hur man deklarerar användardefinierat undantag med hjälp av variabeln Exception datatype.

Att deklarera ett användardefinierat undantag med hjälp av Exception-variabeln är en process i tre steg. Dessa tre steg är –

  1. Deklarera en variabel av undantagsdatatyp – Denna variabel kommer att ta hela bördan på sina axlar.
  2. Höj undantaget – Det här är den del där du berättar för kompilatorn om tillståndet som kommer att utlösa undantaget.
  3. Hantera undantaget – Det här är det sista avsnittet där du anger vad som ska hända när felet som du tog upp ska utlösas.

I denna PL/SQL-handledning kommer jag att förklara för dig vart och ett av dessa tre steg med hjälp av en PL/SQL-kod.

För demonstrationsändamål kommer jag att skriva en kod som kontrollerar om divisorn är noll eller inte i divisionsoperationen. Om det är noll kommer ett fel att uppstå och kommer att visas för användaren annars kommer ett verkligt värde som är resultatet av divisionsaritmetiken att returneras på utdataskärmen.

Steg 1:Deklarera en variabel av Exception datatype

Med Exception variabel menar jag en variabel med Exception datatype. Precis som alla andra PL/SQL-variabler kan du deklarera en undantagsvariabel i deklarationssektionen i det anonyma såväl som namngivna PL/SQL-blocket. Denna undantagsvariabel kommer sedan att fungera som ett användardefinierat undantag för din kod.

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

I detta deklarationsavsnitt har vi 4 variabler. Bland dessa 4 variabler är de första 3 normala Number datatypevariabler och den 4 som är ex_DivZero är den speciella EXCEPTION datatypvariabeln. Denna variabel kommer att bli vårt användardefinierade undantag för detta program.

Steg 2:Öka undantaget

Nästa steg efter att ha deklarerat en Exception-variabel är att höja undantaget. För att höja undantaget i PL/SQL använder vi Raise-satsen.

Raise-satsen är en speciell typ av PL/SQL-sats som ändrar det normala flödet av exekvering av koden. Så snart kompilatorn stöter på ett höjningsvillkor överför den kontrollen till undantagshanteraren.

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

Här åtföljs höjningsvillkoret med OM-DÅ-villkoret. Med hjälp av detta kan vi undvika oönskade switchar under programmets kontrollflöde. Genom att använda If Condition ser vi till att detta fel kommer att träda i kraft först när divisorn är lika med 0.

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

Efter att ha skrivit logiken för att höja felet kan du skriva dina andra körbara programsatser av koden precis som vi gjorde här. Efter Raise-satsen utför vi aritmetiken för divisionsoperationen och lagrar resultatet i variabeln var_result, samt visar det tillbaka som utdata med DBMS OUTPUT-satsen.

Steg 3:Hantera undantaget

Det är huvuddelen av koden. Här skriver vi logiken för vårt användardefinierade undantag och talar om för kompilatorn vad den ska göra om och när det felet inträffar.

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

Här har vi undantagshanteraren för variabeln ex_DivZero. I avsnittet om undantagshantering har vi en DBMS OUTPUT-sats som kommer att visas när vår användardefinierade fel som är ex_DivZero inträffar.

Låt oss nu gruppera alla dessa bitar av koder tillsammans.

Dela med nollfel med PL/SQL användardefinierat undantag i Oracle Database

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;
/

Innan du kör det här programmet, se till att du har ställt in SERVEROUTPUT på annars kommer du inte att kunna se resultatet.

Som i steg-1 ställer vi in ​​divisorns värde på noll, vilket i sin tur kommer att höja användardefinieringsfelet ex_DivZero på grund av detta när du kompilerar ovanstående kod kommer du att se strängen "Error Error - Your Divisor is Zero" samma som vi specificerade i vår undantagshanterare (steg 3).

Det är PL/SQL-handledningen om hur man deklarerar användardefinierat undantag med hjälp av en variabel av Exception-datatypen. Hoppas du gillade och lärde dig något nytt. Om så är fallet, se till att dela den här bloggen på dina sociala medier och hjälp andra att lära sig tillsammans med mig och min kanal. Tack och ha en bra dag!


  1. Rätt verktyg gör att trimningen fungerar snabbt

  2. SCD typ 3

  3. Omvandlar godtyckligt många rader till kolumner i PostgreSQL

  4. 2nd Quadrant på PostgresConf US 2018