© Éditions Eyrolles
239
chapitre n° 7
Programmation avancée
ELSE
SET result := CONCAT('Complexe : ',reel,'+',imaginaire,'i');
END IF;
RETURN result ;
END;
Compilation
Pour compiler ces sous-programmes à partir de l’interface de commande, il faut ajouter un
délimiteur après chaque dernier END comme suit :
delimiter $
Sous programme ;
$
Si un message d’erreur apparaît, il indique la ligne concernée ; souvent l’erreur peut être située
juste avant cette ligne. Le même résultat peut être obtenu par la commande SHOW ERRORS.
Une fois que le message « Query OK, 0 rows affected (… sec) » apparaît, le sousprogramme est correctement compilé.
Appel d’un sous-programme
Le créateur d’un sous-programme peut exécuter ce dernier à la demande et sans aucune condition préalable. Pour exécuter un sous-programme à partir d’un autre accès, les conditions
suivantes doivent être respectées :
q
détenir le privilège EXECUTE sur la procédure en question ou sur la base qui contient le
sous-programme, ou au niveau global ;
q
mentionner le nom de la base (du schéma) contenant le sous-programme à l’exécution de
ce dernier (exemple d’appel sous l’interface de commande de la procédure AugmenteCapacite de la base bdjean, pour l’avion d’immatriculation 'F-GLFS' : « CALL
bdjean.AugmenteCapacite('F-GLFS'); »).
Décrivons l’appel d’un sous-programme sous l’interface de commande, dans un sousprogramme MySQL et dans une instruction SQL. Le chapitre suivant détaillera un tel appel à
partir d’un programme externe (Java ou PHP).
Sous l’interface de commande
En phase de tests, il est intéressant de pouvoir déclencher un sous-programme directement
dans l’interface de commande. La commande CALL permet d’appeler une procédure. Une
fonction est exécutée par son nom dans une instruction SQL.
Le tableau suivant décrit l’appel et le résultat des trois sous-programmes. La fonction est
appelée ici dans un SELECT et dans un INSERT de deux manières différentes.
Précédent

- 261/418

Suivant