Riepilogo: in questo tutorial, imparerai come utilizzare l’istruzione SQL Server RAISERROR per generare messaggi di errore definiti dall’utente.
Se si sviluppa una nuova applicazione, è necessario utilizzare l’istruzioneTHROW.,
SQL Server RAISEERROR statement overview
L’istruzioneRAISERROR consente di generare i propri messaggi di errore e restituirli all’applicazione utilizzando lo stesso formato di un messaggio di errore di sistema o di avviso generato dal motore di database SQL Server. Inoltre, l’istruzioneRAISERROR consente di impostare un ID messaggio specifico, un livello di gravità e uno stato per i messaggi di errore.,
Quanto segue illustra la sintassi del RAISERROR istruzione:
Esaminiamo la sintassi del RAISERROR per una migliore comprensione.
message_id
Ilmessage_id è un numero di messaggio di errore definito dall’utente memorizzato nella vista catalogosys.messages.
Per aggiungere un nuovo numero di messaggio di errore definito dall’utente, si utilizza la stored procedure sp_addmessage. Un numero di messaggio di errore definito dall’utente deve essere maggiore di 50.000., Per impostazione predefinita, l’istruzioneRAISERROR utilizzamessage_id 50.000 per generare un errore.,
L’istruzione seguente aggiunge un messaggio di errore personalizzato per il sys.messages vista:
Per verificare l’inserimento, è possibile utilizzare la seguente query:
Code language: SQL (Structured Query Language) (sql)
Per utilizzare questo message_id, è possibile eseguire il RAISEERROR istruzione come segue:
Code language: SQL (Structured Query Language) (sql)
Ecco l’output:
Code language: SQL (Structured Query Language) (sql)
Per rimuovere un messaggio di un sys.messages, è possibile utilizzare la stored procedure sp_dropmessage., Ad esempio, la seguente istruzione elimina l’id messaggio 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text è un messaggio definito dall’utente con formattazione come la funzione printf nella libreria standard C. message_text può contenere fino a 2.047 caratteri, gli ultimi 3 caratteri sono riservati ai puntini di sospensione (…). Semessage_text contiene 2048 o più, verrà troncato ed è riempito con un puntino di sospensione.,
Quando si specifica l’istruzione message_text, l’istruzione RAISERROR utilizza message_id 50000 per generare il messaggio di errore.
L’esempio seguente utilizza il RAISERROR istruzione per generare un errore con un messaggio di testo:
Code language: SQL (Structured Query Language) (sql)
L’output sarà simile a questa:
Code language: SQL (Structured Query Language) (sql)
la gravità
Il livello di gravità è un numero intero compreso tra 0 e 25, con ogni livello rappresenta la gravità dell’errore.
Code language: SQL (Structured Query Language) (sql)
stato
Lo stato è un numero intero compreso tra 0 e 255., Se si genera lo stesso errore definito dall’utente in più posizioni, è possibile utilizzare un numero di stato univoco per ogni posizione per facilitare la ricerca della sezione del codice che causa gli errori. Per la maggior parte delle implementazioni, è possibile utilizzare 1.
CON l’opzione
L’opzione può essere LOG NOWAIT o SETERROR:
-
WITH LOGregistra l’errore nel log di errore del registro dell’applicazione e per l’istanza di Motore di Database SQL Server., WITH NOWAITinvia immediatamente il messaggio di errore al client.WITH SETERRORimposta i valoriERROR_NUMBERe@@ERRORsu message_id o 50000, indipendentemente dal livello di gravità.
SQL Server RAISERROR examples
Prendiamo alcuni esempi di utilizzo dell’istruzioneRAISERROR per ottenere una migliore comprensione.,
A) Utilizzo di SQL Server RAISERROR con TRY CATCH block example
In questo esempio, usiamo ilRAISERROR all’interno di unTRY blocco per far sì che l’esecuzione salti alCATCH blocco associato. All’interno del blocco CATCH, usiamo il RAISERROR per restituire le informazioni di errore che hanno richiamato il blocco CATCH.,
Ecco l’output:
Code language: SQL (Structured Query Language) (sql)
B) Utilizzo di SQL Server istruzione RAISERROR con una dinamica messaggio di testo di esempio
L’esempio seguente mostra come utilizzare una variabile locale per fornire il messaggio di testo per un RAISERROR dichiarazione:
l’output è Il seguente:
Code language: SQL (Structured Query Language) (sql)
Quando utilizzare l’istruzione RAISERROR
Si utilizza il tag RAISERROR dichiarazione nei seguenti casi:
- Risoluzione dei problemi codice Transact-SQL.
- Restituisce messaggi che contengono testo variabile.
- Esaminare i valori dei dati.,
- Fa sì che l’esecuzione salti da un blocco
TRYal bloccoCATCHassociato. - Restituisce le informazioni di errore dal blocco
CATCHai chiamanti, chiamando batch o applicazione.
In questo tutorial, imparerai come utilizzare l’istruzione RAISERROR di SQL Server per generare messaggi di errore definiti dall’utente.