ERROR_NUMBER (Transact-SQL)

Renvoie le numéro d'erreur de l'erreur qui a causé l'exécution du bloc CATCH d'une construction TRY…CATCH.

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

Syntaxe

ERROR_NUMBER ( )

Retourne les Types

int

Valeur de retour

Lorsqu'il est appelé dans un bloc CATCH, renvoie le numéro d'erreur de l'erreur qui a causé l'exécution du bloc CATCH.

Renvoie la valeur NULL s'il est appelé en dehors de l'étendue d'un bloc CATCH.

Notes

Cette fonction peut être appelée n'importe où dans l'étendue d'un bloc CATCH.

ERROR_NUMBER renvoie le numéro d'erreur, quel que soit le nombre d'exécutions de la fonction, ou l'endroit où elle est exécutée au sein de l'étendue du bloc CATCH. Au contraire, @@ERROR ne renvoie que le numéro d'erreur dans l'instruction immédiatement après celle qui a causé une erreur, ou la première instruction d'un bloc CATCH.

Dans des blocs CATCH imbriqués, ERROR_NUMBER renvoie le numéro d'erreur spécifique à l'étendue du bloc CATCH dans lequel il est référencé. Par exemple, le bloc CATCH d'une construction externe TRY...CATCH peut contenir une construction imbriquée TRY...CATCH. Avec le bloc CATCH imbriqué, ERROR_NUMBER renvoie le numéro de l'erreur qui a invoqué le bloc CATCH imbriqué. Si ERROR_NUMBER est exécuté dans le bloc CATCH externe, il renvoie le numéro de l'erreur qui a invoqué le bloc CATCH imbriqué.

Exemples

A. Utilisation de ERROR_NUMBER 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 numéro de l'erreur est renvoyé.

USE AdventureWorks2008R2;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO

B. Utilisation de ERROR_NUMBER 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. Outre le numéro de l'erreur, des informations relatives à l'erreur sont également renvoyées.

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