ERROR_MESSAGE (Transact-SQL)

Restituisce il testo del messaggio dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

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