© Éditions Eyrolles
257
chapitre n° 7
Programmation avancée
La trace d’une exécution de cette procédure (quelle que soit la valeur du paramètre passé en
entrée), suite à la suppression de la table Pilote dans la base bdsoutou, est la suivante :
CALL bdsoutou.procException1('AF')$
+-----------------------+
| Resultat autreErreur |
+-----------------------+
| Erreur mais laquelle? |
+-----------------------+
Même erreur sur différentes instructions
Plusieurs cas de figure sont possibles suivant qu’on désire maîtriser une exception ou terminer
toutes les exceptions avant la fin du sous-programme.
Gestion d’une seule exception
Le tableau suivant décrit une procédure qui gère deux fois l’erreur non trouvée (NOT FOUND)
sur deux requêtes distinctes. La première requête extrait le nom du pilote de code passé en paramètre. La deuxième donne le nom du pilote ayant un nombre d’heures de vol égal à celui passé
en paramètre. Le sous-programme se termine correctement si les deux requêtes ne retournent
qu’un seul enregistrement. Les autres erreurs potentielles ne sont pas prises en compte.
Le principe est d’utiliser une variable indiquant quelle est la requête qui a fait sortir du bloc
par l’exception levée.
Exécutons cette procédure avec différents paramètres, on obtient :
CALL bdsoutou.procException2('PL-1', 1000)$
+------------------------------------------------------+
| CONCAT('Le pilote de code ',p_brevet,' est ',v_nom) |
+------------------------------------------------------+
| Le pilote de code PL-1 est Gilles Laborde
|
+------------------------------------------------------+
+----------------------------------------------------------------+
| CONCAT('Le pilote ayant ',p_heures,' heures de vol est ',v_nom) |
+----------------------------------------------------------------+
| Le pilote ayant 1000 heures de vol est Florence Périssel
|
+----------------------------------------------------------------+
CALL bdsoutou.procException2('PL-0', 2450)$
+-----------------------------------------------+
| CONCAT('Pas de pilote de brevet : ',p_brevet) |
+-----------------------------------------------+
| Pas de pilote de brevet : PL-0
|
+-----------------------------------------------+
Précédent

- 279/418

Suivant