Nell'introduzione alle eccezioni PL/SQL abbiamo appreso che esistono tre modi per dichiarare eccezioni definite dall'utente in Oracle Database. In questo tutorial esploreremo il primo modo e impareremo come dichiarare un'eccezione definita dall'utente utilizzando una variabile di tipo di dati Eccezione.
La dichiarazione di un'eccezione definita dall'utente utilizzando la variabile Exception è un processo in tre fasi. Questi tre passaggi sono –
- Dichiara una variabile di tipo di dati di eccezione – Questa variabile si prenderà l'intero onere sulle spalle.
- Sollevare l'eccezione – Questa è la parte in cui informi il compilatore della condizione che attiverà l'eccezione.
- Gestisci l'eccezione – Questa è l'ultima sezione in cui specifichi cosa accadrà quando si attiverà l'errore che hai generato.
In questo tutorial PL/SQL ti spiegherò ciascuno di questi tre passaggi con l'aiuto di un codice PL/SQL.
A scopo dimostrativo scriverò un codice che verificherà se il divisore è zero o meno nell'operazione di divisione. Se è zero, si verificherà un errore e verrà visualizzato all'utente, altrimenti sullo schermo di output verrà restituito un valore effettivo che è il risultato dell'aritmetica della divisione.
Passaggio 1:dichiara una variabile di tipo di dati Eccezione
Per variabile Exception intendo una variabile con tipo di dati Exception. Come qualsiasi altra variabile PL/SQL, puoi dichiarare una variabile Exception nella sezione di dichiarazione del blocco PL/SQL anonimo e denominato. Questa variabile di eccezione funzionerà quindi come eccezione definita dall'utente per il codice.
DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION;
In questa sezione di dichiarazione abbiamo 4 variabili. Tra queste 4 variabili le prime 3 sono normali variabili del tipo di dati Number e la 4 che è ex_DivZero è la speciale variabile del tipo di dati EXCEPTION. Questa variabile diventerà la nostra eccezione definita dall'utente per questo programma.
Passaggio 2:solleva l'eccezione
Il passaggio successivo dopo aver dichiarato una variabile Exception consiste nel sollevare l'eccezione. Per sollevare l'eccezione in PL/SQL utilizziamo l'istruzione Raise.
L'istruzione Raise è un tipo speciale di istruzione PL/SQL che modifica il normale flusso di esecuzione del codice. Non appena il compilatore incontra una condizione di rilancio, trasferisce il controllo al gestore delle eccezioni.
BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF;
Qui la condizione di rilancio è accompagnata dalla condizione IF-THEN. Con l'aiuto di questo possiamo evitare cambi indesiderati durante il flusso di controllo del programma. Utilizzando If Condition ci assicuriamo che questo errore entri in azione solo quando il divisore è uguale a 0.
var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
Dopo aver scritto la logica per sollevare l'errore, puoi scrivere le altre istruzioni eseguibili del codice proprio come abbiamo fatto qui. Dopo l'istruzione Raise stiamo eseguendo l'operazione aritmetica di divisione e memorizzando il risultato nella variabile var_result, oltre a visualizzarlo come output utilizzando l'istruzione DBMS OUTPUT.
Passaggio 3:gestisci l'eccezione
Questa è la sezione principale del codice. Qui scriviamo la logica per la nostra eccezione definita dall'utente e diciamo al compilatore cosa dovrebbe fare se e quando si verifica quell'errore.
EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Qui abbiamo il gestore delle eccezioni per la variabile ex_DivZero. Nella sezione di gestione delle eccezioni abbiamo un'istruzione DBMS OUTPUT che verrà visualizzata quando il nostro utente definisce l'errore che si verifica ex_DivZero.
Ora raggruppiamo insieme tutti questi blocchi di codici.
Dividi per zero errori utilizzando 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; /
Prima di eseguire questo programma assicurati di aver impostato SERVEROUTPUT su altrimenti non sarai in grado di vedere il risultato.
Come nel passaggio 1 impostiamo il valore del divisore su zero che a sua volta aumenterà l'errore di definizione dell'utente ex_DivZero per questo motivo durante la compilazione del codice sopra vedrai la stringa "Error Error – Your Divisor is Zero" la stessa che abbiamo specificato nel nostro gestore di eccezioni (passaggio 3).
Questo è il tutorial PL/SQL su come dichiarare un'eccezione definita dall'utente utilizzando una variabile di tipo di dati Exception. Spero ti sia piaciuto e hai imparato qualcosa di nuovo. Se è così, assicurati di condividere questo blog sui tuoi social media e aiuta gli altri a imparare insieme a me e al mio canale. Grazie e buona giornata!