Partager via


ERROR_NUMBER (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Cette fonction retourne le numéro d’erreur de l’erreur qui a provoqué l’exécution du bloc CATCH d’une construction TRY...CATCH.

Conventions de la syntaxe Transact-SQL

Syntaxe

ERROR_NUMBER ( )  

Types de retour

int

Valeur de retour

Quand elle est appelée dans un bloc CATCH, la fonction ERROR_NUMBER retourne le numéro de l’erreur qui a provoqué l’exécution du bloc CATCH.

ERROR_NUMBER retourne NULL quand l’appel a lieu en dehors de l’étendue d’un bloc CATCH.

Notes

ERROR_NUMBER prend en charge les appels à partir de n’importe quel emplacement dans l’étendue d’un bloc CATCH.

ERROR_NUMBER retourne un numéro d’erreur pertinent, quel que soit le nombre de fois où elle s’exécute, ou l’emplacement de son exécution dans l’étendue du bloc CATCH. Ce comportement contraste avec celui d’une fonction comme @@ERROR, qui retourne uniquement un numéro d’erreur dans l’instruction immédiatement après celle qui a provoqué une erreur.

Dans un bloc CATCH imbriqué, ERROR_NUMBER retourne le numéro d’erreur spécifique à l’étendue du bloc CATCH qui a référencé ce bloc CATCH. Par exemple, le bloc CATCH d’une construction TRY...CATCH externe peut comporter une construction TRY...CATCH interne. À l’intérieur de ce bloc CATCH interne, ERROR_NUMBER retourne le numéro de l’erreur qui a appelé le bloc CATCH interne. Si ERROR_NUMBER s’exécute dans le bloc CATCH externe, elle retourne le numéro de l’erreur qui a appelé ce bloc CATCH externe.

Exemples

R. Utilisation de ERROR_NUMBER dans un bloc CATCH

L’exemple suivant montre une instruction SELECT qui génère une erreur de division par zéro. Le bloc CATCH retourne le numéro de l’erreur.

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

Voici le jeu de résultats obtenu.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B. Utilisation de ERROR_NUMBER dans un bloc CATCH avec d'autres outils de traitement des erreurs

L’exemple suivant montre une instruction SELECT qui génère une erreur de division par zéro. Outre le numéro de l’erreur, le bloc CATCH retourne des informations relatives à cette erreur.

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  

Voici le jeu de résultats obtenu.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorLine  ErrorMessage
----------- ------------- ----------- ---------------  ---------- ----------------------------------
8134        16            1           NULL             4          Divide by zero error encountered.

(1 row(s) affected)

Voir aussi

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)
Références relatives aux erreurs et aux événements (moteur de base de données)