Lorsque vous programmez des procédures ou fonctions stockées, il est important d'avoir en poche des techniques de débogage. Ceci rendra votre programmation beaucoup plus rapide et beaucoup plus agréable.
Voici quelques pistes à cet effet.
Si la procédure ou la fonction stockée ne compile pas
- Dans le message d'erreur, localisez le texte qui suit le « près de » ou le « near ». L'erreur se situe AVANT ce code. MySQL vous indique que lorsqu'il rencontre ce code, il ne comprend plus rien.

-
Il arrive parfois que dans phpMyAdmin, le message soit trop long pour être affiché entièrement à l'écran.

Vous pouvez faire un clic droit sur le message et choisir « Inspecter l'élément ». Vous aurez ainsi accès à la partie qui vous intéresse : celle qui contient le « près de » ou le « near ».

- Dans le cas où l'erreur se situe sur la première ligne exécutable, vérifiez si vous avez bien modifié le délimiteur (ceci n'est pas nécessaire si vous travaillez dans la fenêtre de modification de procédure dans phpMyAdmin).
- Vérifiez si le code de votre procédure débute par BEGIN et se termine par END.
- Si une relecture ne vous a pas permis de trouver l'erreur, vérifiez systématiquement la syntaxe que vous avez utilisée. Une erreur de syntaxe pourrait faire en sorte que MySQL vous donne une erreur vis-à-vis le END qui termine la procédure, mais ce n'est pas toujours le cas.
- Les parenthèse, guillemets, apostrophes sont-ils tous bien refermés ?
- Les instructions se terminent-elles toutes par un point-virgule ?
- La syntaxe du IF, du WHILE, des DECLARE, etc. est-elle correcte ? Au besoin, sortez les fiches qui donnent des exemples de la syntaxe à utiliser afin de bien les comparer à votre code.
- Si vous ne voyez toujours pas le problème, essayez de sortir une instruction de la procédure stockée afin de l'exécuter directement dans la fenêtre SQL de phpMyAdmin ou encore à la ligne de commande. Par exemple, si vous avez fait une erreur dans une requête SELECT, l'exécution de cette requête donnera un message d'erreur plus clair que l'exécution d'une procédure stockée qui contient la requête erronée.
Si le traitement ne fait pas ce qu'il doit faire
Votre procédure ou fonction stockée compile mais elle ne fait pas ce qu'elle devrait faire ? Il n'y a rien comme de faire une trace du traitement exécuté. La table du journal des erreurs pourra vous aider.
- D'abord, assurez-vous d'avoir un gestionnaire sur SQLEXCEPTION. Il pourra vous indiquer si une erreur non gérée survient et enregistrer de l'information sur cette erreur dans le journal des erreurs.
- Consultez régulièrement votre journal des erreurs.
- Ajoutez un enregistrement dans le journal des erreurs à différents endroits de votre code afin de constater ce qui est vraiment exécuté et quelle est la valeur de différentes variables.
- Pratiquez le rubber duck debugging (méthode du canard en plastique) : il s'agit d'expliquer à un collègue ce que le code fait ou encore de l'expliquer à un canard en plastique. Vous serez surpris de voir à quel point c'est efficace !
- Si vous ne trouvez toujours pas, essayez de retirer tous vos gestionnaires. L'erreur pourrait être causée par le code de votre gestionnaire...
Pour plus d'information
« Méthode du canard en plastique ». Wikipédia. https://fr.wikipedia.org/wiki/M%C3%A9thode_du_canard_en_plastique
Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.