Partie II
Programmation procédurale
250
© Éditions Eyrolles
q
SQLEXCEPTION gère toutes les erreurs qui ne sont ni gérées par SQLWARNING ni par NOT
FOUND.
q
instructions MySQL : une ou plusieurs instructions du langage de MySQL (bloc,
appel possibles par CALL d’une fonction ou d’une procédure cataloguée).
Il est possible de grouper plusieurs déclarations d’exceptions, ainsi que de prévoir plusieurs
conditions pour une même exception. En plus de pouvoir tester des erreurs pour tel ou tel état
(SQLSTATE), nous verrons que l’on peut récupérer une erreur de code donné (paramètre
code_erreur_mysql). Par exemple, ERROR 1046 désigne la non sélection d’une base de
données (1046 devra être écrit en lieu et place de code_erreur_mysql).
Restrictions
Il n’est pas encore possible de dérouter volontairement l’exécution d’un sous-programme avec
certaines conditions, par l’intermédiaire d’une instruction spécifique comme RAISE ou RESIGNAL. L’exception serait ainsi manuellement déclenchée et pourrait être définie par le programmeur (par exemple, la condition PILOTE_TROP_JEUNE si l’âge d’un pilote est inférieur à
20 ans).
Il n’est pas non plus permis de déclarer ses propres exceptions (par exemple, pour pouvoir
dérouter le sous-programme si l’âge d’un pilote est inférieur à une valeur donnée).
Étudions à présent les différents types d’exceptions en programmant des procédures simples
interrogeant la table Pilote illustrée à la figure 7-2.
Exceptions avec EXIT
Examinons la clause EXIT de l’instruction DECLARE HANDLER à travers un exemple.
Gestion de NOT FOUND
Le tableau suivant décrit une procédure qui gère une erreur : aucun pilote n’est associé à la
compagnie de code passé en paramètre (NOT FOUND). La procédure ne se termine pas correctement si plusieurs lignes sont retournées (erreur Result consisted of more than
one row).
Programmation procédurale
250
© Éditions Eyrolles
q
SQLEXCEPTION gère toutes les erreurs qui ne sont ni gérées par SQLWARNING ni par NOT
FOUND.
q
instructions MySQL : une ou plusieurs instructions du langage de MySQL (bloc,
appel possibles par CALL d’une fonction ou d’une procédure cataloguée).
Il est possible de grouper plusieurs déclarations d’exceptions, ainsi que de prévoir plusieurs
conditions pour une même exception. En plus de pouvoir tester des erreurs pour tel ou tel état
(SQLSTATE), nous verrons que l’on peut récupérer une erreur de code donné (paramètre
code_erreur_mysql). Par exemple, ERROR 1046 désigne la non sélection d’une base de
données (1046 devra être écrit en lieu et place de code_erreur_mysql).
Restrictions
Il n’est pas encore possible de dérouter volontairement l’exécution d’un sous-programme avec
certaines conditions, par l’intermédiaire d’une instruction spécifique comme RAISE ou RESIGNAL. L’exception serait ainsi manuellement déclenchée et pourrait être définie par le programmeur (par exemple, la condition PILOTE_TROP_JEUNE si l’âge d’un pilote est inférieur à
20 ans).
Il n’est pas non plus permis de déclarer ses propres exceptions (par exemple, pour pouvoir
dérouter le sous-programme si l’âge d’un pilote est inférieur à une valeur donnée).
Étudions à présent les différents types d’exceptions en programmant des procédures simples
interrogeant la table Pilote illustrée à la figure 7-2.
Exceptions avec EXIT
Examinons la clause EXIT de l’instruction DECLARE HANDLER à travers un exemple.
Gestion de NOT FOUND
Le tableau suivant décrit une procédure qui gère une erreur : aucun pilote n’est associé à la
compagnie de code passé en paramètre (NOT FOUND). La procédure ne se termine pas correctement si plusieurs lignes sont retournées (erreur Result consisted of more than
one row).
