I introduktionen til PL/SQL-undtagelser lærte vi, at der er tre måder at erklære brugerdefinerede undtagelser på i Oracle Database. I dette selvstudie skal vi udforske den første måde og lære, hvordan man erklærer en brugerdefineret undtagelse ved hjælp af en variabel af Exception datatype.
Erklæring af en brugerdefineret undtagelse ved hjælp af Exception-variabel er en proces i tre trin. Disse tre trin er –
- Erklære en variabel med undtagelsesdatatype – Denne variabel kommer til at tage hele byrden på sine skuldre.
- Hæv undtagelsen – Dette er den del, hvor du fortæller compileren om tilstanden, som vil udløse undtagelsen.
- Håndter undtagelsen – Dette er det sidste afsnit, hvor du angiver, hvad der skal ske, når den fejl, du rejste, udløses.
I denne PL/SQL-tutorial vil jeg forklare dig hvert af disse tre trin ved hjælp af en PL/SQL-kode.
Til demonstrationsformålet vil jeg skrive en kode, som vil kontrollere, om divisoren er nul eller ej i divisionsoperationen. Hvis den er nul, vil der opstå en fejl, og den vil blive vist for brugeren, ellers vil en faktisk værdi, som er resultatet af divisions-aritmetikken, blive returneret på outputskærmen.
Trin 1:Deklarer en variabel med undtagelsesdatatype
Med Exception variabel mener jeg en variabel med Exception datatype. Som enhver anden PL/SQL-variabel kan du erklære en undtagelsesvariabel i erklæringssektionen af den anonyme såvel som navngivne PL/SQL-blok. Denne undtagelsesvariabel vil derefter fungere som brugerdefineret undtagelse for din kode.
DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION;
I dette deklarationsafsnit har vi 4 variabler. Blandt disse 4 variabler er de første 3 normale Number datatypevariabler, og den 4, som er ex_DivZero, er den specielle EXCEPTION datatypevariabel. Denne variabel bliver vores brugerdefinerede undtagelse for dette program.
Trin 2:Hæv undtagelsen
Det næste trin efter at have erklæret en undtagelsesvariabel er at hæve undtagelsen. For at hæve undtagelsen i PL/SQL bruger vi Raise-sætning.
Raise-sætning er en speciel form for PL/SQL-sætning, som ændrer den normale udførelse af koden. Så snart compileren støder på en raise-tilstand, overfører den kontrollen til undtagelsesbehandleren.
BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF;
Her er raise-betingelsen ledsaget af IF-THEN-betingelsen. Ved hjælp af dette kan vi undgå uønskede kontakter under programmets kontrolflow. Ved at bruge If Condition sørger vi for, at denne fejl kun træder i kraft, når divisoren er lig med 0.
var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
Efter at have skrevet logikken for at hæve fejlen kan du skrive dine andre eksekverbare sætninger af koden ligesom vi gjorde her. Efter Raise-sætningen udfører vi aritmetikken for divisionsoperationen og lagrer resultatet i variablen var_result, samt viser det tilbage som output ved hjælp af DBMS OUTPUT-sætningen.
Trin 3:Håndter undtagelsen
Det er hovedafsnittet i koden. Her skriver vi logikken for vores brugerdefinerede undtagelse og fortæller compileren, hvad den skal gøre, hvis og når den fejl opstår.
EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Her har vi undtagelsesbehandleren for variablen ex_DivZero. I undtagelseshåndteringssektionen har vi en DBMS OUTPUT-sætning, som vil blive vist, når vores brugerdefinerede fejl, som er ex_DivZero, opstår.
Lad os nu gruppere alle disse bidder af koder sammen.
Divider med nul fejl ved hjælp af PL/SQL brugerdefineret undtagelse 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; /
Før du kører dette program, skal du sørge for, at du har sat SERVEROUTPUT til, ellers vil du ikke kunne se resultatet.
Som i trin-1 sætter vi divisorens værdi til nul, hvilket igen vil øge brugerdefinerede fejl ex_DivZero, på grund af dette ved kompilering af ovenstående kode vil du se strengen "Error Error - Your Divisor is Zero" den samme som vi specificerede i vores undtagelsesbehandler (trin 3).
Det er PL/SQL-tutorialen om, hvordan man erklærer en brugerdefineret undtagelse ved hjælp af en variabel af Exception-datatypen. Håber du nød og lærte noget nyt. Hvis ja, så sørg for at dele denne blog på dine sociale medier og hjælpe andre med at lære sammen med mig og min kanal. Tak og god dag!