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.

Syntaxe

ERROR_NUMBER()

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é.

Retourne les Types

int

Exemples

A. Utilisation de ERROR_NUMBER dans un bloc CATCH

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

USE AdventureWorks;
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 vous 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 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

Voir aussi

Référence

sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)

Autres ressources

Récupération d'informations d'erreur dans Transact-SQL
Utilisation de TRY...CATCH dans Transact-SQL
Utilisation de RAISERROR
Utilisation de @@ERROR
Niveaux de gravité des erreurs du moteur de base de données

Aide et Informations

Assistance sur SQL Server 2005