Partie II
Programmation procédurale
234
© Éditions Eyrolles
contexte multi-utilisateur. Les avantages d’utiliser des sous-programmes ont été soulignés au
chapitre 6 (modularité, portabilité, extensibilité, réutilisabilité, intégrité et confidentialité).
Comme les blocs, nous verrons que les sous-programmes ont une partie de déclaration des
variables, une autre contenant les instructions et éventuellement une partie pour gérer les
exceptions (erreurs produites durant l’exécution).
Une procédure peut être appelée à l’aide de l’interface de commande (par CALL ), dans un
programme externe (Java, PHP, C…), par d’autres procédures ou fonctions, ou dans le corps
d’un déclencheur. Les fonctions peuvent être invoquées dans une instruction SQL ( SELECT ,
INSERT , et UPDATE ) ou dans une expression (affectation de variable ou calcul).
Le cycle de vie d’un sous-programme est le suivant : création de la procédure ou de la fonction
(compilation et stockage dans la base), appel et éventuellement suppression du sousprogramme de la base.
Procédures cataloguées
La syntaxe de création d’une procédure cataloguée est la suivante. Le privilège CREATE
ROUTINE est requis sur la base de données (ou au niveau global) en question ( ALTER
ROUTINE et EXECUTE sont affectés par la suite automatiquement).
CREATE PROCEDURE [ nomBase .] nomProcédure (
[ [ IN | OUT | INOUT ] param typeMySQL
[,[ IN | OUT | INOUT ] param2 typeMySQL ] ] ...)
[ LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT ' commentaire '
]
BEGIN
[DECLARE ... ;]
bloc d’instructions SQL et MySQL ... ;
END;
délimiteur
q
Par défaut, la procédure est créée dans la base de données courante (sélectionnée). Si un
nom est spécifié ( nomBase ), la procédure appartiendra à cette base de données.
q
IN désigne un paramètre d’entrée (par défaut), OUT un paramètre de sortie et INOUT un
paramètre d’entrée et de sortie.
q
LANGUAGE SQL (par défaut) détermine le langage de programmation de la procédure.
MySQL n’est pas encore compatible avec d’autres langages que le sien.
Programmation procédurale
234
© Éditions Eyrolles
contexte multi-utilisateur. Les avantages d’utiliser des sous-programmes ont été soulignés au
chapitre 6 (modularité, portabilité, extensibilité, réutilisabilité, intégrité et confidentialité).
Comme les blocs, nous verrons que les sous-programmes ont une partie de déclaration des
variables, une autre contenant les instructions et éventuellement une partie pour gérer les
exceptions (erreurs produites durant l’exécution).
Une procédure peut être appelée à l’aide de l’interface de commande (par CALL ), dans un
programme externe (Java, PHP, C…), par d’autres procédures ou fonctions, ou dans le corps
d’un déclencheur. Les fonctions peuvent être invoquées dans une instruction SQL ( SELECT ,
INSERT , et UPDATE ) ou dans une expression (affectation de variable ou calcul).
Le cycle de vie d’un sous-programme est le suivant : création de la procédure ou de la fonction
(compilation et stockage dans la base), appel et éventuellement suppression du sousprogramme de la base.
Procédures cataloguées
La syntaxe de création d’une procédure cataloguée est la suivante. Le privilège CREATE
ROUTINE est requis sur la base de données (ou au niveau global) en question ( ALTER
ROUTINE et EXECUTE sont affectés par la suite automatiquement).
CREATE PROCEDURE [ nomBase .] nomProcédure (
[ [ IN | OUT | INOUT ] param typeMySQL
[,[ IN | OUT | INOUT ] param2 typeMySQL ] ] ...)
[ LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT ' commentaire '
]
BEGIN
[DECLARE ... ;]
bloc d’instructions SQL et MySQL ... ;
END;
délimiteur
q
Par défaut, la procédure est créée dans la base de données courante (sélectionnée). Si un
nom est spécifié ( nomBase ), la procédure appartiendra à cette base de données.
q
IN désigne un paramètre d’entrée (par défaut), OUT un paramètre de sortie et INOUT un
paramètre d’entrée et de sortie.
q
LANGUAGE SQL (par défaut) détermine le langage de programmation de la procédure.
MySQL n’est pas encore compatible avec d’autres langages que le sien.
