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

Come dichiarare l'eccezione definita dall'utente utilizzando PRAGMA EXCEPTION_INIT

Come discusso nell'introduzione della gestione delle eccezioni PL/SQL, esistono tre modi per dichiarare le eccezioni definite dall'utente. Tra questi tre modi abbiamo già imparato i primi due modi che stanno dichiarando l'eccezione definita dall'utente usando

  1. Aumenta la dichiarazione e
  2. Procedura di errore_Rileva_Applicazione

L'unico modo che resta da discutere ora è dichiarare le eccezioni definite dall'utente utilizzando la funzione PRAGMA EXCEPTION_INIT in Oracle Database.

Pertanto, in questo tutorial PL/SQL impareremo come dichiarare un'eccezione definita dall'utente PL/SQL in Oracle Database utilizzando la funzione PRAGMA EXCEPTION_INIT.

Cos'è PRAGMA EXCEPTION_INIT?

Pragma Exception_Init è un'istruzione in due parti in cui la prima parte è composta dalla parola chiave PRAGMA e la seconda parte è la chiamata Exception_Init.

Parola chiave PRAGMA

Un pragma è una direttiva del compilatore che indica che le istruzioni seguite dalla parola chiave PRAGMA è un'istruzione della direttiva del compilatore, ciò significa che l'istruzione verrà elaborata in fase di compilazione e non in fase di esecuzione.

PRAGMA Exception_Init

Exception_init ti aiuta ad associare un nome di eccezione a un numero di errore Oracle. In altre parole possiamo dire che usando Exception_Init puoi nominare l'eccezione.

Perché nominare l'eccezione?

Sì, esiste un modo per dichiarare l'eccezione definita dall'utente senza il nome e cioè utilizzando la procedura Raise_Exception_Error. Questo è davvero un modo semplice e facile, ma come abbiamo appreso nell'ultimo tutorial che per gestire le eccezioni senza nome utilizziamo il gestore di eccezioni OTHERS.

Ora pensa che nel tuo progetto hai più eccezioni e anche quello senza nome. Per gestire tutte queste eccezioni hai un unico gestore di eccezioni con il nome OTHERS. In questo caso al verificarsi di una condizione di eccezione il compilatore visualizzerà lo stack di errori prodotto dall'ALTRO gestore.

Riesci a immaginare quanto sarà difficile rintracciare quella parte del tuo progetto che sta causando l'errore. Per tracciare quella parte devi passare attraverso ogni riga del tuo codice. Sarà solo una perdita di tempo.

Puoi risparmiare tutto quel tempo sprecando sforzi semplicemente nominando l'eccezione, in questo modo puoi progettare un gestore di eccezioni specifico per il nome della tua eccezione che sarà facilmente rintracciabile. Questo è il vantaggio di nominare l'eccezione.

Sintassi di Pragma Exception_Init.

PRAGMA EXCEPTION_INIT (exception_name, error_number);

Esempio:dichiarare l'eccezione definita dall'utente utilizzando Pragma Exception_Init

DECLARE
  ex_age    EXCEPTION;
  age       NUMBER    := 17;
  PRAGMA EXCEPTION_INIT(ex_age, -20008);
BEGIN
  IF age<18 THEN
    RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!');
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?');
  
  EXCEPTION WHEN ex_age THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);   
END;
/

Ho spiegato in dettaglio questo esempio nel mio Video Tutorial sul mio canale YouTube. Ti chiederei di dare un'occhiata al tutorial lì.

Perché usare PRAGMA EXCEPTION_INIT con RAISE_APPLICATION_ERROR?

Sebbene non sia obbligatorio utilizzare PRAGMA EXCEPTION_INIT con la procedura RAISE_APPLICATION_ERROR, tuttavia è più una preferenza personale che una regola di programmazione. Se si desidera stampare un messaggio di errore con un numero di errore come il modo standard di Oracle di mostrare un errore, è consigliabile utilizzare PRAGMA EXCEPTION_INIT con la procedura RAISE_APPLICATION_ERROR.

Ma se vuoi solo stampare il messaggio di errore e non il numero di errore, puoi usare PRAGMAEXCEPTION_INIT con l'istruzione RAISE.

Questo è il tutorial PL/SQL su come dichiarare un'eccezione definita dall'utente in Oracle Database utilizzando PRAGMA EXCEPTION_INIT. Spero che tu abbia imparato qualcosa di nuovo. Se trovi questo tutorial informativo, condividi sui tuoi social media. Grazie e buona giornata!