Partie II
Programmation procédurale
248
© Éditions Eyrolles
Restrictions
• Une validation (COMMIT) avant la fermeture d’un curseur FOR UPDATE aura des effets de
bord fâcheux.
• Il n’est pas possible de déclarer un curseur FOR UPDATE en utilisant dans la requête les
directives DISTINCT ou GROUP BY, un opérateur ensembliste, ou une fonction d’agrégat.
• Il n’existe pas encore de directive WHERE CURRENT OF pour modifier l’enregistrement courant d’un curseur avec verrou.
• Un curseur, comme un tableau, ne peut pas être passé en paramètre d’un sous-programme
ni en entrée (IN), ni en sortie (OUT).
Exceptions
Afin d’éviter qu’un programme ne s’arrête dès la première erreur suite à une instruction SQL
(SELECT ne retournant aucune ligne, INSERT ou UPDATE d’une valeur incorrecte, DELETE
d’un enregistrement « père » ayant des enregistrements « fils » associés, etc.), il est indispensable de prévoir les cas potentiels d’erreurs et d’associer à chacun de ces cas la programmation
d’une exception (handler dans le vocabulaire de MySQL).
Dans le langage des informaticiens, on dit qu’on garde la main pendant l’exécution du
programme. Le mécanisme des exceptions (handling errors) est largement utilisé par tous les
développeurs, car il est prépondérant dans la mise en œuvre des transactions. Les exceptions
peuvent se paramétrer dans un sous-programme (fonction ou procédure cataloguée) ou un
déclencheur.
Généralités
Une exception MySQL correspond à une condition d’erreur et peut être associée à un identificateur (exception nommée). Une exception est détectée (aussi dite « levée ») si elle est prévue
dans un handler au cours de l’exécution d’un bloc (entre BEGIN et END). Une fois levée, elle
fait continuer (ou sortir du bloc) le programme après avoir réalisé une ou plusieurs instructions
que le programmeur aura explicitement spécifiées.
La figure suivante illustre les deux mécanismes qui peuvent être mis en œuvre pour gérer une
exception (seuls CONTINUE et EXIT sont actuellement pris en charge par MySQL). Supposons que l’extraction ne ramène aucune ligne, on peut programmer la sortie du bloc courant ou
continuer dans le bloc. Supposons que l’insertion déclenche une erreur, on peut également
décider de sortir ou de poursuivre le traitement.
Programmation procédurale
248
© Éditions Eyrolles
Restrictions
• Une validation (COMMIT) avant la fermeture d’un curseur FOR UPDATE aura des effets de
bord fâcheux.
• Il n’est pas possible de déclarer un curseur FOR UPDATE en utilisant dans la requête les
directives DISTINCT ou GROUP BY, un opérateur ensembliste, ou une fonction d’agrégat.
• Il n’existe pas encore de directive WHERE CURRENT OF pour modifier l’enregistrement courant d’un curseur avec verrou.
• Un curseur, comme un tableau, ne peut pas être passé en paramètre d’un sous-programme
ni en entrée (IN), ni en sortie (OUT).
Exceptions
Afin d’éviter qu’un programme ne s’arrête dès la première erreur suite à une instruction SQL
(SELECT ne retournant aucune ligne, INSERT ou UPDATE d’une valeur incorrecte, DELETE
d’un enregistrement « père » ayant des enregistrements « fils » associés, etc.), il est indispensable de prévoir les cas potentiels d’erreurs et d’associer à chacun de ces cas la programmation
d’une exception (handler dans le vocabulaire de MySQL).
Dans le langage des informaticiens, on dit qu’on garde la main pendant l’exécution du
programme. Le mécanisme des exceptions (handling errors) est largement utilisé par tous les
développeurs, car il est prépondérant dans la mise en œuvre des transactions. Les exceptions
peuvent se paramétrer dans un sous-programme (fonction ou procédure cataloguée) ou un
déclencheur.
Généralités
Une exception MySQL correspond à une condition d’erreur et peut être associée à un identificateur (exception nommée). Une exception est détectée (aussi dite « levée ») si elle est prévue
dans un handler au cours de l’exécution d’un bloc (entre BEGIN et END). Une fois levée, elle
fait continuer (ou sortir du bloc) le programme après avoir réalisé une ou plusieurs instructions
que le programmeur aura explicitement spécifiées.
La figure suivante illustre les deux mécanismes qui peuvent être mis en œuvre pour gérer une
exception (seuls CONTINUE et EXIT sont actuellement pris en charge par MySQL). Supposons que l’extraction ne ramène aucune ligne, on peut programmer la sortie du bloc courant ou
continuer dans le bloc. Supposons que l’insertion déclenche une erreur, on peut également
décider de sortir ou de poursuivre le traitement.
