ERROR_MESSAGE (Transact-SQL)
Restituisce il testo del messaggio dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.
Sintassi
ERROR_MESSAGE ( )
Tipi restituiti
nvarchar(2048)
Valore restituito
Quando viene chiamata in un blocco CATCH, restituisce il testo completo del messaggio di errore che ha causato l'esecuzione del blocco CATCH. Il testo include i valori forniti da qualsiasi parametro sostituibile, ad esempio lunghezze, nomi di oggetti oppure orari.
Restituisce NULL se chiamata all'esterno dell'ambito di un blocco CATCH.
Osservazioni
ERROR_MESSAGE può essere chiamata in qualsiasi punto nell'ambito di un blocco CATCH.
ERROR_MESSAGE restituisce il messaggio di errore indipendentemente da quante volte o in quale punto viene eseguita nell'ambito del blocco CATCH. Questo comportamento è diverso rispetto a quello di altre funzioni, ad esempio @@ERROR, che restituiscono solo un numero di errore nell'istruzione immediatamente successiva a quella che ha causato l'errore o nella prima istruzione di un blocco CATCH.
Nei blocchi CATCH nidificati viene restituito il messaggio di errore specifico dell'ambito del blocco CATCH contenente il riferimento a ERROR_MESSAGE . Ad esempio, il blocco CATCH di un costrutto esterno TRY...CATCH potrebbe includere un costrutto TRY...CATCH nidificato. All'interno del blocco CATCH nidificato ERROR_MESSAGE restituisce il messaggio dall'errore che ha richiamato il blocco CATCH nidificato. Se ERROR_MESSAGE viene eseguita nel blocco CATCH esterno, restituisce il messaggio dell'errore che ha richiamato tale blocco CATCH.
Esempi
A. Utilizzo di ERROR_MESSAGE in un blocco CATCH
Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Viene restituito il messaggio dell'errore.
USE AdventureWorks;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
B. Utilizzo di ERROR_MESSAGE 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. Insieme al messaggio di errore vengono restituite informazioni relative all'errore.
USE AdventureWorks;
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
Vedere anche