© Éditions Eyrolles
235
chapitre n° 7
Programmation avancée
q
DETERMINISTIC est simplement informationnel (l’optimiseur s’en servira dans des
versions ultérieures) et décrit le caractère déterministe de la procédure. Si vous interrogez
la base, il serait plus naturel d’utiliser NOT DETERMINISTIC , car on ne sait pas a priori
ce que l’on va extraire (comme dans la boîte de chocolats de Forrest Gump) .
q
CONTAINS SQL renseigne sur le fait que la procédure interagit avec la base. NO SQL indique l’inverse. READS SQL DATA précise que les interactions sont en lecture seulement.
MODIFIES SQL DATA signifie que des mises à jour de la base sont possibles.
q
SQL SECURITY détermine si la procédure s’exécute avec les privilèges du créateur
(option par défaut : definer-rights procedure ) ou ceux de l’utilisateur qui appelle la procédure ( invoker-rights procedure ).
q
COMMENT permet de commenter la procédure au niveau du dictionnaire des données (voir
chapitre 5).
q
bloc d’instructions SQL et MySQL contient les déclarations et les instructions de
la procédure écrite dans le langage de MySQL (voir le chapitre précédent).
q
délimiteur : délimiteur de commandes différent de « ; » (symbole utilisé obligatoirement en fin de chaque déclaration et instruction du langage procédural de MySQL).
Fonctions cataloguées
La syntaxe de création d’une fonction cataloguée est CREATE FUNCTION . Les prérogatives
et les options sont les mêmes que pour les procédures. N’oubliez pas l’instruction « RETURN
variable ; » qui termine la fonction et retourne le résultat (de même type que celui déclaré
dans la clause RETURNS .
CREATE FUNCTION [ nomBase .] nomFonction (
[ param typeMySQL
[, param2 typeMySQL ] ] ...)
RETURNS 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 ... ;
contenant un « RETURN variable ; »
END;
délimiteur
Précédent

- 257/418

Suivant