Oracle
 sql >> Database >  >> RDS >> Oracle

Dichiara l'eccezione definita dall'utente utilizzando il metodo RAISE_APPLICATION_ERROR nel database Oracle

Come discusso nell'introduzione alla gestione delle eccezioni PL/SQL, esistono tre modi per dichiarare eccezioni definite dall'utente in Oracle PL/SQL. Tra questi tre abbiamo già discusso e imparato il primo modo nel tutorial precedente. Oggi in questo blog faremo un passo avanti e vedremo il secondo modo per dichiarare l'eccezione definita dall'utente e impareremo come dichiarare l'eccezione definita dall'utente utilizzando il metodo RAISE_APPLICATION_ERROR.

Cos'è il metodo RAISE_APPLICATION_ERROR?

RAISE APPLICATION ERROR è una procedura memorizzata integrata con il software Oracle. Utilizzando questa procedura è possibile associare un numero di errore al messaggio di errore personalizzato. Combinando sia il numero di errore che il messaggio di errore personalizzato è possibile comporre una stringa di errore simile a quelle stringhe di errore predefinite visualizzate dal motore Oracle quando si verifica un errore.

Quanti errori possiamo generare utilizzando la procedura RAISE_APPLICATION_ERROR?

La procedura RAISE_APPLICATION_ERROR ci permette di numerare i nostri errori da -20.000 a -20.999 quindi possiamo dire che usando la procedura RAISE_APPLICATION_ERROR possiamo generare 1000 errori.

Raise_application_error fa parte di quale pacchetto?

Puoi trovare la procedura RAISE_APPLICATION_ERROR all'interno del pacchetto DBMS_STANDARD.

Sintassi di Raise_Application_Error

raise_application_error (error_number, message [, {TRUE | FALSE}]);

Qui il numero_errore è un numero intero negativo nell'intervallo -20000.. -20999 e il messaggio è una stringa di caratteri lunga fino a 2048 byte. Nel caso in cui il terzo parametro facoltativo sia VERO, l'errore viene inserito nella pila di tutti gli errori precedenti. Tuttavia, in caso di parametro FALSE (predefinito), l'errore sostituisce tutti gli errori precedenti. RAISE_APPLICATION_ERROR fa parte del pacchetto DBMS_STANDARD e non è necessario qualificare i riferimenti al pacchetto STANDARD. 

Esempio di procedura RAISE_APPLICATION_ERROR

Nell'esempio seguente prenderemo un input di tipo di dati numerico dall'utente e verificheremo se è 18 o superiore. In caso contrario verrà sollevato l'errore di definizione dell'utente, che dichiareremo, altrimenti si verificherà il normale flusso di esecuzione del programma.

Passaggio 1:attiva l'output del server

Se vogliamo vedere il risultato restituito dal programma PL/SQL nella schermata di output predefinita, dovremo impostare l'output del server su "on", che per impostazione predefinita è impostato su "off" per la sessione.

SET SERVEROUTPUT ON;

Passaggio 2:prendi l'input dell'utente

Anche se possiamo cablare i valori nel nostro codice come abbiamo fatto nell'ultimo tutorial, ma non è così divertente. Per rendere il codice più dinamico ho deciso di accettare l'input dell'utente questa volta facendogli inserire il valore in una finestra pop-up con un messaggio personalizzato stampato su di esso.

Possiamo prendere l'input utilizzando la finestra pop-up con un messaggio personalizzato stampato su di essa utilizzando il comando ACCEPT in Oracle PL/SQL.

ACCEPT var_age NUMBER PROMPT 'What is your age?';

Il comando inizia con la parola chiave accept seguita dal nome della variabile e dal relativo tipo di dati. Nel nostro caso il nome è var_age e il tipo di dati è NUMBER. Questa è la prima metà della dichiarazione. Questa parte ci aiuterà a memorizzare il valore di input. L'altra metà della dichiarazione sarà responsabile della stampa del messaggio personalizzato sulla finestra pop-up. Usando la parola chiave PROMPT che è subito dopo il tipo di dati della variabile, puoi specificare qualsiasi stringa desiderata che vuoi stampare sulla tua casella pop-up. Nel nostro caso, questo messaggio personalizzato sarà "Qual è la tua età?"

Se vuoi che faccia un tutorial completo che spieghi in dettaglio il comando ACCEPT, condividi questo blog usando l'hashtag #RebellionRider. Puoi anche scrivermi sul mio twitter @RebellionRider.

Passaggio 3:dichiara la variabile

DECLARE
  age   NUMBER := &var_age;

A causa della restrizione dell'ambito, non possiamo utilizzare il valore memorizzato nella variabile che abbiamo utilizzato nel comando di accettazione. Ciò significa che non possiamo utilizzare direttamente quel valore nel nostro programma PL/SQL. Possiamo risolvere questo problema assegnando il valore che è stato memorizzato nella variabile var_age a una variabile che è locale al blocco PL/SQL. Questo è esattamente ciò che abbiamo fatto nel segmento precedente del codice.

Nel segmento di codice sopra abbiamo dichiarato una variabile locale con nome 'age' e assegnato il valore memorizzato nella variabile var_age utilizzando l'operatore di assegnazione.

Passaggio 4:dichiara l'eccezione definita dall'utente utilizzando la procedura RAISE_APPLICATION_ERROR

BEGIN
  IF age < 18 THEN
   RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF;

Qui in questo segmento di codice abbiamo dichiarato l'eccezione definita dall'utente utilizzando la procedura RAISE_APPLICATION_ERROR. Questa procedura viene chiamata utilizzando due parametri. In cui il primo parametro è il numero negativo che, nel mio caso, è -20008 e il secondo numero è una stringa che viene visualizzata se si verifica lo stesso errore.

Ora la domanda è:quando si verificherà questo errore?

Come puoi vedere, il codice è racchiuso all'interno di un blocco di controllo condizionale IF-THEN che si assicura che l'errore venga sollevato solo se l'età dell'utente è inferiore a 18 anni.

Passaggio 5:istruzione eseguibile

DBMS_OUTPUT.PUT_LINE('Sure, What would you like to have?');

Le istruzioni eseguibili sono quelle che vengono compilate ed eseguite quando non ci sono errori e il programma ha un normale flusso di esecuzione. Per rendere il codice semplice e di facile comprensione, ho appena scritto una singola istruzione che è l'istruzione DBMS OUTPUT.

Passaggio 6:scrivi il gestore delle eccezioni

Ora che abbiamo dichiarato e sollevato l'eccezione definita dall'utente, dobbiamo scrivere il gestore dell'eccezione per essa. Come detto nel precedente tutorial PL/SQL, nella sezione Gestore di eccezioni specifichiamo cosa accadrà quando si attiverà l'errore che hai sollevato.

EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

In questa sezione di gestione delle eccezioni ho chiamato una funzione SQLERRM utilizzando l'istruzione DBMS OUTPUT. Questa è una funzione di utilità fornita da Oracle che recupera il messaggio di errore per l'ultima eccezione verificatasi.

Compiliamo tutti questi piccoli blocchi di codice in un unico grande programma.

Eccezione definita dall'utente utilizzando la procedura Raise_Application_Error

SET SERVEROUTPUT ON;
ACCEPT var_age NUMBER PROMPT 'What is yor age';
DECLARE
  age   NUMBER := &var_age;
BEGIN
  IF age < 18 THEN
    RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF; 
  DBMS_OUTPUT.PUT_LINE ('Sure, What would you like to have?'); 
  EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/ 

Questo è un tutorial breve ma descrittivo su come dichiarare un'eccezione definita dall'utente utilizzando la procedura Raise_Application_Error in Oracle Database. Spero che tu abbia imparato qualcosa di nuovo e ti sia piaciuto leggere. Puoi aiutare gli altri a imparare così come aiutare me e il mio canale a crescere condividendo questo blog sui tuoi social media. Grazie e buona giornata!