Partager via


ERROR_STATE (Transact-SQL)

S’applique à : point de terminaison d’analytique SQL Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL dans Microsoft Fabric Warehouse dans Microsoft Fabric

Retourne le numéro d’état 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_STATE ( )  

Types de retour

int

Valeur de retour

Lorsqu'elle est appelée dans un bloc CATCH, elle renvoie le numéro d'état du message d'erreur à l'origine de l'exécution du bloc CATCH.

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

Remarques

Certains messages d'erreur peuvent apparaître en de multiples endroits du code du Microsoft SQL Server Moteur de base de données. L'erreur « 1105 » par exemple, peut être provoquée par différentes conditions. Chaque condition qui génère l'erreur attribue un code d'état unique.

Lorsque vous consultez des bases de données de problèmes connus, telles que la Base de connaissances Microsoft, vous pouvez utiliser le numéro d'état pour voir si le problème enregistré est identique à l'erreur que vous avez rencontrée. Par exemple, si un article de la Base de connaissances traite de l'erreur 1105 avec un état 2 et que l'erreur 1105 reçue était associée à un état 3, votre erreur avait probablement une autre cause que celle mentionnée dans l'article.

Un ingénieur technique de SQL Server peut également utiliser le code d'état pour déterminer l'emplacement du code d'erreur dans le code source et réaliser ainsi plus facilement un diagnostic.

ERROR_STATE peut être appelée depuis n'importe quel emplacement dans le champ d'un bloc CATCH.

ERROR_STATE renvoie l'état de l'erreur, indépendamment du nombre d'exécutions ou de l'endroit où elle est exécutée dans le champ du bloc CATCH. En revanche, des fonctions telles que @@ERROR renvoient uniquement le numéro d'erreur dans l'instruction qui suit celle à l'origine d'une erreur ou dans la première instruction d'un bloc CATCH.

Dans les blocs CATCH imbriqués, ERROR_STATE renvoie l'état d'erreur propre au champ du bloc CATCH dans lequel elle est référencée. Par exemple, le bloc CATCH d'une construction TRY...CATCH externe peut comporter une construction TRY...CATCH imbriquée. Dans un bloc CATCH imbriqué, ERROR_STATE renvoie l'état depuis l'erreur qui a appelé ce bloc. Si ERROR_STATE est exécutée dans le bloc CATCH externe, elle renvoie l'état à partir de l'erreur qui a appelé ce bloc CATCH.

Exemples

R. Utilisation d'ERROR_STATE dans un bloc CATCH

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

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

B. Utilisation d'ERROR_STATE dans un bloc CATCH avec d'autres outils de gestion des erreurs

L’exemple suivant montre une instruction SELECT qui génère une erreur de division par zéro. Outre l'état de l'erreur, la procédure renvoie également les informations relatives à l'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  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

C. Utilisation d'ERROR_STATE dans un bloc CATCH avec d'autres outils de gestion des erreurs

L’exemple suivant montre une instruction SELECT qui génère une erreur de division par zéro. Outre l'état de l'erreur, la procédure renvoie également les informations relatives à l'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_MESSAGE() AS ErrorMessage;  
END CATCH;  
GO  

Voir aussi

sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Références relatives aux erreurs et aux événements (moteur de base de données)