sql >> Database >  >> RDS >> Oracle

Hoe een door de gebruiker gedefinieerde uitzondering te declareren met behulp van een uitzonderingsvariabele in Oracle Database?

In de Inleiding tot PL/SQL-uitzonderingen hebben we geleerd dat er drie manieren zijn om door de gebruiker gedefinieerde uitzonderingen in Oracle Database te declareren. In deze tutorial gaan we de eerste manier verkennen en leren hoe je een door de gebruiker gedefinieerde uitzondering declareert met behulp van een variabele van het gegevenstype Exception.

Het declareren van een door de gebruiker gedefinieerde uitzondering met behulp van de Exception-variabele is een proces van drie stappen. Deze drie stappen zijn –

  1. Declareer een variabele van het exception datatype – Deze variabele gaat de hele last op zijn schouders nemen.
  2. Verhoog de uitzondering – Dit is het deel waar je de compiler vertelt over de voorwaarde die de uitzondering zal activeren.
  3. Behandel de uitzondering – Dit is de laatste sectie waar u specificeert wat er zal gebeuren wanneer de fout die u heeft gegenereerd, wordt geactiveerd.

In deze PL/SQL-tutorial ga ik je elk van deze drie stappen uitleggen met behulp van een PL/SQL-code.

Voor de demonstratie zal ik een code schrijven die zal controleren of de deler nul is of niet in de delingsbewerking. Als het nul is, treedt er een fout op en wordt deze aan de gebruiker weergegeven, anders wordt een werkelijke waarde geretourneerd die het resultaat is van de rekenkundige deling op het uitvoerscherm.

Stap 1:Declareer een variabele van het gegevenstype Exception

Met Exception-variabele bedoel ik een variabele met het datatype Exception. Net als elke andere PL/SQL-variabele kunt u een Exception-variabele declareren in de declaratiesectie van zowel het anonieme als het benoemde PL/SQL-blok. Deze uitzonderingsvariabele zal dan werken als door de gebruiker gedefinieerde uitzondering voor uw code.

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

In deze declaratiesectie hebben we 4 variabelen. Van deze 4 variabelen zijn de eerste 3 normale Number-datatypevariabelen en de 4 die ex_DivZero is, is de speciale EXCEPTION-datatypevariabele. Deze variabele wordt onze door de gebruiker gedefinieerde uitzondering voor dit programma.

Stap 2:Verhoog de uitzondering

De volgende stap na het declareren van een Exception-variabele is het verhogen van de exception. Om de uitzondering in PL/SQL te verhogen, gebruiken we de instructie Raise.

Raise-instructie is een speciaal soort PL/SQL-instructie die de normale uitvoering van de code verandert. Zodra de compiler een verhogingsvoorwaarde tegenkomt, wordt de controle overgedragen aan de uitzonderingsbehandelaar.

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

Hier gaat de raise-voorwaarde gepaard met de IF-THEN-voorwaarde. Met behulp hiervan kunnen we ongewenste schakelaars tijdens de controlestroom van het programma vermijden. Met If-voorwaarde zorgen we ervoor dat deze fout alleen optreedt als de deler gelijk is aan 0.

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

Na het schrijven van de logica voor het genereren van de fout, kunt u uw andere uitvoerbare instructies van de code schrijven, net zoals we hier hebben gedaan. Na de Raise-instructie voeren we de rekenkundige bewerking van de deling uit en slaan het resultaat op in de variabele var_result, en geven het ook weer als uitvoer met behulp van de DBMS OUTPUT-instructie.

Stap 3:De uitzondering afhandelen

Dat is het hoofdgedeelte van de code. Hier schrijven we de logica voor onze door de gebruiker gedefinieerde uitzondering en vertellen de compiler wat hij moet doen als en wanneer die fout optreedt.

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

Hier hebben we de uitzonderingshandler voor de variabele ex_DivZero. In het gedeelte voor het afhandelen van uitzonderingen hebben we een DBMS OUTPUT-instructie die wordt weergegeven wanneer onze gebruiker een fout definieert die ex_DivZero is.

Laten we nu al deze stukjes codes bij elkaar voegen.

Deel door nul fout met behulp van PL/SQL User-define Exception in 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;
/

Voordat u dit programma uitvoert, moet u ervoor zorgen dat u de SERVEROUTPUT aan heeft staan, anders kunt u het resultaat niet zien.

Net als in stap 1 hebben we de waarde van de deler op nul gezet, wat op zijn beurt de door de gebruiker gedefinieerde fout ex_DivZero zal verhogen, hierdoor ziet u bij het compileren van de bovenstaande code de string "Foutfout - uw deler is nul" dezelfde die we hebben gespecificeerd in onze uitzonderingshandler (stap 3).

Dat is de PL/SQL-zelfstudie over het declareren van een door de gebruiker gedefinieerde uitzondering met behulp van een variabele van het gegevenstype Exception. Ik hoop dat je genoten hebt en iets nieuws hebt geleerd. Als dat zo is, zorg er dan voor dat je deze blog op je sociale media deelt en anderen helpt om samen met mij en mijn kanaal te leren. Bedankt en een fijne dag verder!


  1. Selecteer een willekeurige steekproef van resultaten uit een queryresultaat

  2. Hoge beschikbaarheid van PostgreSQL beheren – Deel I:Automatische PostgreSQL-failover

  3. ListView Van Sqlite in Android

  4. DatabaseError:huidige transactie is afgebroken, opdrachten genegeerd tot einde transactieblok?