© Éditions Eyrolles
243
chapitre n° 7
Programmation avancée
La compilation renvoie un message d’erreur très clair :
ERROR 1303 (2F003): Can't create a PROCEDURE from within another
stored routine
La solution est de créer les deux procédures à part ou d’inclure un bloc BEGIN… END dans la
procédure de plus haut niveau.
Modification d’un sous-programme
La modification d’un sous-programme s’exécute par la commande ALTER. Pour pouvoir
changer un sous-programme, si vous n’êtes pas son créateur, vous devez détenir le privilège
ALTER ROUTINE sur la base de données (ou au niveau global). Plusieurs caractéristiques
peuvent être corrigées en une seule instruction (mais ni le code, ni les paramètres). La syntaxe
générale est la suivante :
ALTER {PROCEDURE | FUNCTION} [nomBase.]nomSousProg
[ { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'commentaire'
...]
L’instruction suivante commente le sous-programme Mouchard présent dans la base
bdsoutou en indiquant qu’il interagit avec la base en écriture, et qu’il s’exécutera avec les
privilèges de l’accès utilisateur qui l’a créé.
ALTER PROCEDURE bdsoutou.Mouchard
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT 'Traces de qui lance quoi';
Destruction d’un sous-programme
Pour supprimer un sous-programme, si vous n’êtes pas son créateur, le privilège ALTER
ROUTINE est requis sur la base de données (ou au niveau global). La syntaxe de suppression
d’un sous-programme est la suivante :
DROP {PROCEDURE | FUNCTION} [IF EXISTS] [nomBase.]nomSousProg
q
IF EXISTS évite un message de warning si le sous-programme n’existe pas.
Les instructions suivantes suppriment la procédure cataloguée Mouchard de la base bdsoutou.
delimiter ;
DROP PROCEDURE bdsoutou.Mouchard;
243
chapitre n° 7
Programmation avancée
La compilation renvoie un message d’erreur très clair :
ERROR 1303 (2F003): Can't create a PROCEDURE from within another
stored routine
La solution est de créer les deux procédures à part ou d’inclure un bloc BEGIN… END dans la
procédure de plus haut niveau.
Modification d’un sous-programme
La modification d’un sous-programme s’exécute par la commande ALTER. Pour pouvoir
changer un sous-programme, si vous n’êtes pas son créateur, vous devez détenir le privilège
ALTER ROUTINE sur la base de données (ou au niveau global). Plusieurs caractéristiques
peuvent être corrigées en une seule instruction (mais ni le code, ni les paramètres). La syntaxe
générale est la suivante :
ALTER {PROCEDURE | FUNCTION} [nomBase.]nomSousProg
[ { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'commentaire'
...]
L’instruction suivante commente le sous-programme Mouchard présent dans la base
bdsoutou en indiquant qu’il interagit avec la base en écriture, et qu’il s’exécutera avec les
privilèges de l’accès utilisateur qui l’a créé.
ALTER PROCEDURE bdsoutou.Mouchard
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT 'Traces de qui lance quoi';
Destruction d’un sous-programme
Pour supprimer un sous-programme, si vous n’êtes pas son créateur, le privilège ALTER
ROUTINE est requis sur la base de données (ou au niveau global). La syntaxe de suppression
d’un sous-programme est la suivante :
DROP {PROCEDURE | FUNCTION} [IF EXISTS] [nomBase.]nomSousProg
q
IF EXISTS évite un message de warning si le sous-programme n’existe pas.
Les instructions suivantes suppriment la procédure cataloguée Mouchard de la base bdsoutou.
delimiter ;
DROP PROCEDURE bdsoutou.Mouchard;
