@@ERROR |
Erreur |
|---|---|
| SQL Server | Microsoft SQL Server |
Syntaxe
| @@ERROR |
Description
Cette fonction permet de retourner le numéro d'erreur de la dernière instruction Transact-SQL exécutée.
Remarques
- @@ERROR retourne le code d'erreur de la dernière instruction T-SQL exécutée : Cette fonction retourne un entier représentant le code d'erreur généré par la dernière commande exécutée. Si aucune erreur ne s'est produite, elle retourne 0. Elle doit être appelée immédiatement après l'instruction T-SQL à vérifier.
- Son usage est essentiel pour le traitement d'erreurs classique en T-SQL : Avant l'apparition de TRY...CATCH, @@ERROR était la principale méthode de détection des erreurs dans les scripts T-SQL. Elle permettait de conditionner le flux d'exécution en fonction du succès ou de l'échec d'une commande.
- La valeur de @@ERROR est volatile et doit être capturée immédiatement : Dès qu'une nouvelle instruction est exécutée, la valeur de @@ERROR est mise à jour. Par conséquent, si l'on souhaite conserver le code d'erreur, il faut l'assigner à une variable juste après l'instruction fautive.
- Utile dans les procédures stockées pour un contrôle précis des erreurs : Elle permet d'écrire des blocs conditionnels dans les STORED PROCEDURES afin de gérer des erreurs spécifiques, comme les violations de contraintes, les erreurs de conversion ou d'accès à des objets absents.
- Ne lève pas d'exception, contrairement au bloc TRY...CATCH : @@ERROR ne déclenche pas automatiquement un traitement d'erreur : il ne fait que retourner un code. C'est au développeur de capturer cette valeur et d'agir en conséquence (rollback, message, sortie,...).
- Complémentaire au mot-clef RETURN dans les STORED PROCEDURE : Un usage courant consiste à retourner la valeur de @@ERROR à la fin d'une STORED PROCEDURE, pour que l'appelant puisse savoir si une erreur s'est produite et en connaître la nature via le code retourné.
- Peut être combinée avec une gestion manuelle des transactions : Dans un bloc transactionnel, on peut vérifier @@ERROR après chaque étape (INSERT, UPDATE,...) pour décider de faire un COMMIT ou un ROLLBACK. Cela permet de maintenir l'intégrité des données en cas d'échec partiel.
- Aujourd'hui partiellement obsolète face à TRY...CATCH, mais encore utile : Même si TRY...CATCH est plus moderne et plus puissant, @@ERROR reste pertinent pour les scripts simples, les anciennes bases, ou les environnements où une granularité très fine de contrôle est nécessaire ligne par ligne.
Dernière mise à jour : Jeudi, le 23 Septembre 2021