Dans une procédure stockée, un gestionnaire est un mécanisme qui permet d'intercepter une erreur avant que le programme ne plante. C'est un peu comme un try... catch en PHP ou en C#.
Lorsqu'une erreur survient, MySQL lève une exception. Le gestionnaire pourra réagir de façon spécifique à une exception donnée.
Le gestionnaire peut réagir de différentes façons :
- arrêter le traitement et indiquer au programme qu'un problème est survenu
ou
- effectuer une action donnée pour récupérer l'erreur puis continuer le traitement, tout en informant le programme qu'un problème a dû être corrigé
Par exemple, si on tente d'ajouter une voiture avec un client_id qui n'existe pas dans la table des clients, MySQL lèvera l'exception suivante :

Si la procédure stockée est appelée par un programme PHP, il faut trouver un moyen d'informer l'usager que l'ajout n'a pas été effectué comme souhaité. Voici quelques scénarios possibles :
- Dès que l'exception est levée, la procédure stockée initialise un paramètre en sortie pour indiquer au programme qu'un problème a été rencontré. Aucun ajout n'est effectué.
ou
- Quand l'exception est levée, la procédure stockée vérifie si un client anonyme existe dans la BD (ex : clients.id = 999999, clients.prenom = 'anonyme'). S'il n'existe pas, la procédure s'occupe de le créer. Elle enregistre ensuite la voiture en utilisant le id du client anonyme comme clé étrangère. Finalement, elle initialise un paramètre en sortie pour indiquer au programme que la voiture a été assignée à un client anonyme.
La fiche suivante explique comment intercepter les exceptions dans une procédure stockée.
Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.