ERROR_SEVERITY (Transact-SQL)
Restituisce la gravità dell'errore che ha attivato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.
Convenzioni della sintassi Transact-SQL
Sintassi
ERROR_SEVERITY ( )
Tipi restituiti
int
Valore restituito
Se richiamata in un blocco CATCH, questa istruzione restituisce la gravità del messaggio di errore che ha attivato l'esecuzione del blocco CATCH.
Restituisce NULL se chiamata all'esterno dell'ambito di un blocco CATCH.
Osservazioni
È possibile richiamare ERROR_SEVERITY da un qualsiasi punto nell'ambito di un blocco CATCH.
ERROR_SEVERITY restituisce la gravità dell'errore indipendentemente dal numero di esecuzioni oppure dalla sua posizione di esecuzione nell'ambito del blocco CATCH. Questa caratteristica è diversa da quella di funzioni quali, ad esempio, @@ERROR, che restituisce solo il numero di errore nell'istruzione subito dopo quella che ha provocato un errore oppure nella prima istruzione di un blocco CATCH.
Nei blocchi CATCH nidificati l'istruzione ERROR_SEVERITY restituisce la gravità dell'errore specifica dell'ambito del blocco CATCH contenente il riferimento a essa. Ad esempio, il blocco CATCH di un costrutto esterno TRY...CATCH potrebbe includere un costrutto TRY...CATCH nidificato. Nel blocco CATCH nidificato ERROR_SEVERITY restituisce la gravità dell'errore che ha richiamato il blocco CATCH nidificato. Se ERROR_SEVERITY viene eseguito in un blocco CATCH esterno, restituisce la gravità dell'errore che ha richiamato tale blocco CATCH.
Esempi
A.Utilizzo di ERROR_SEVERITY in un blocco CATCH
Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Viene restituita la gravità dell'errore.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_SEVERITY() AS ErrorSeverity;
END CATCH;
GO
B.Utilizzo di ERROR_SEVERITY in un blocco CATCH con altri strumenti di gestione degli errori
Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Assieme alla gravità dell'errore vengono restituite le informazioni relative all'errore stesso.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO