SQLCODE |
Code SQL |
|---|---|
| Oracle Database SQL | Oracle 6 ou supérieure |
Syntaxe
| SQLCODE |
Description
Cette fonction retourne le dernier code d'erreur d'une requête SQL.
Remarques
- Rôle principal : La variable SQLCODE est utilisée dans PL/SQL pour obtenir le code numérique de la dernière erreur rencontrée. Ce code est un entier : une valeur négative indique une erreur, une valeur positive signale un avertissement, et zéro signifie qu'aucune erreur ne s'est produite. Cela permet aux développeurs d'identifier rapidement la nature du problème lors de l'exécution.
- Utilisation typique dans les blocs EXCEPTION : SQLCODE est souvent utilisée dans la section EXCEPTION d'un bloc PL/SQL, associée à SQLERRM pour fournir un message d'erreur complet. Par exemple, on peut stocker SQLCODE dans une variable locale afin de l'enregistrer dans un journal ou de l'afficher à l'utilisateur.
- Différence avec SQLERRM : Alors que SQLCODE retourne uniquement le code numérique de l'erreur, SQLERRM renvoie le message textuel associé. Les deux sont souvent utilisés ensemble pour fournir un diagnostic précis : SQLCODE pour la référence technique et SQLERRM pour la description lisible.
- Portée d'utilisation : SQLCODE ne peut être utilisée qu'à l'intérieur d'un bloc PL/SQL ou d'un déclencheur (trigger). Elle n'est pas directement utilisable dans une requête SQL pure, ce qui la distingue de certaines fonctions SQL standards.
- Valeur après un succès : Lorsque la dernière instruction SQL s'est exécutée avec succès sans erreur, SQLCODE retourne zéro. Cela permet, dans un code PL/SQL, de vérifier explicitement qu'aucune erreur n'est survenue avant de continuer le traitement.
- Historique et compatibilité : SQLCODE est présente depuis Oracle 6, ce qui en fait un outil historique et largement supporté dans toutes les versions modernes d'Oracle Database. Cette compatibilité facilite la migration de vieux scripts PL/SQL vers des environnements plus récents.
- Utilisation pour la gestion d'erreurs personnalisée : Les développeurs utilisent SQLCODE pour implémenter des mécanismes de gestion d'erreurs sur mesure. Par exemple, on peut créer une table de correspondance entre les codes d'erreurs et des actions spécifiques, afin de réagir différemment selon le type de problème rencontré.
- Gestion des exceptions internes : Certaines exceptions PL/SQL prédéfinies, comme NO_DATA_FOUND ou TOO_MANY_ROWS, ont un SQLCODE spécifique. Cela permet de créer des conditions de traitement basées uniquement sur la valeur de SQLCODE plutôt que sur le nom de l'exception.
- Valeur après un ROLLBACK ou un COMMIT : Après un COMMIT ou un ROLLBACK, la valeur de SQLCODE peut être réinitialisée à zéro, car ces instructions ne produisent pas d'erreurs SQL directes. Cela signifie qu'il faut capturer SQLCODE immédiatement après l'erreur que l'on veut traiter.
- Différences avec d'autres SGBD : Dans certains autres systèmes de gestion de bases de données, l'équivalent de SQLCODE peut avoir un comportement légèrement différent. Par exemple, DB2 utilise aussi SQLCODE mais avec une plage de valeurs positives et négatives différente, ce qui peut poser problème lors de portages.
- Utilisation dans les déclencheurs : Dans un déclencheur, SQLCODE peut être utilisé pour détecter des erreurs dans les opérations déclenchées par une modification de table. Cela est utile lorsqu'on souhaite journaliser ou réagir à des erreurs survenues dans un déclencheur complexe.
- Limites d'utilisation : SQLCODE ne retourne qu'un seul code d'erreur, celui de la dernière instruction exécutée. Si plusieurs erreurs se produisent en cascade dans un bloc PL/SQL, seules la dernière et son code seront accessibles. Il faut donc structurer le code de manière à capturer l'information dès qu'une erreur survient.
Voir également
Langage de programmation - Oracle Database SQL - Références des codes d'erreur
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015