ERROR_MESSAGE (Transact-SQL)

Retourne le texte du message de l'erreur qui a provoqué l'exécution du bloc CATCH d'une construction TRY…CATCH.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

ERROR_MESSAGE ( ) 

Types de retour

nvarchar(2048)

Valeur de retour

Appelé dans un bloc CATCH, retourne le texte complet du message d'erreur qui a provoqué l'exécution du bloc CATCH. Le texte comprend les valeurs fournies pour tous les paramètres remplaçables, tels que les longueurs, les noms d'objet ou les heures.

Retourne NULL si l'appel a lieu en dehors de l'étendue d'un bloc CATCH.

Notes

ERROR_MESSAGE peut être appelé partout dans l'étendue d'un bloc CATCH.

ERROR_MESSAGE retourne le message d'erreur indépendamment du nombre de fois ou de l'emplacement où il est exécuté dans l'étendue du bloc CATCH. Il s'agit là d'une différence avec des fonctions telles que @@ERROR, qui retourne seulement le numéro de l'erreur dans l'instruction immédiatement après celle qui provoque une erreur ou bien la première instruction d'un bloc CATCH.

Dans les blocs CATCH imbriqués, ERROR_MESSAGE retourne le message d'erreur spécifique à l'étendue du bloc CATCH dans lequel il est référencé. Par exemple, le bloc CATCH d'une construction TRY...CATCH externe peut comporter une construction TRY...CATCH imbriquée. Dans le bloc CATCH imbriqué, ERROR_MESSAGE retourne le message de l'erreur qui a appelé le bloc CATCH imbriqué. Si ERROR_MESSAGE est exécuté dans le bloc CATCH externe, il retourne le message de l'erreur qui a appelé ce bloc CATCH.

Exemples

A. Utilisation de ERROR_MESSAGE dans un bloc CATCH

L'exemple de code suivant montre une instruction SELECT qui génère une erreur de division par zéro. Le message de l'erreur est retourné.

USE AdventureWorks2008R2;
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. Utilisation de ERROR_MESSAGE dans un bloc CATCH avec d'autres outils de traitement des erreurs

L'exemple de code suivant montre une instruction SELECT qui génère une erreur de division par zéro. Des informations relatives à l'erreur sont retournées en même temps que le message d'erreur.

USE AdventureWorks2008R2;
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