À propos de l'enregistrement de la pile d'erreurs SQL PL et PL/SQL
À partir de Db2® Version 10.5 Fix Pack 7, vous pouvez maintenant déterminer l'origine des erreurs d'exécution qui se produisent dans plusieurs couches imbriquées d'invocations de routines SQL. Deux fonctions distinctes permettent de déterminer la source d'une erreur dans une liste de routines actives, y compris les routines SQL et externes, qui étaient en cours d'exécution au moment où l'erreur SQL s'est produite.
La première fonction de traçage de la pile d'erreurs est destinée à faciliter la détermination des problèmes dans les environnements de production où la cause d'une erreur d'exécution est inconnue. Il est activé au niveau de la base de données.
- pl_stack_trace
- Ce paramètre de configuration de la base de données enregistre les erreurs SQL en code procédural dans le fichier db2diag.log. Chaque entrée contient une représentation formatée de la pile d'appels complète, indiquant le nom de la routine et le numéro de la ligne source pour toutes les routines SQL et externes actives sur la pile. Cela permet d'identifier facilement le chemin du code au moment où l'erreur a été détectée. Cette fonction ne nécessite pas de modification de l'application utilisateur.
La deuxième caractéristique est une paire de fonctions d'utilité. Ces fonctions peuvent être utilisées dans le code de l'application, dans le cadre d'une stratégie de signalement des erreurs ou pour la détermination des problèmes dans un environnement de développement. Les fonctions sont décrites comme suit :
- DBMS_UTILITY.FORMAT_CALL_STACK
- Cette fonction renvoie une représentation formatée de la pile d'appels, telle qu'elle existe au moment où la fonction est invoquée. Chaque ligne de sortie décrit une routine SQL ou externe. Les lignes sont classées du plus récent au plus ancien appel de fonction.
- DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
- Cette fonction produit un résultat similaire à celui de la fonction FORMAT_CALL_STACK(), mais pour la pile d'appels telle qu'elle existait au moment de la dernière erreur dans une routine SQL compilée.