Syntaxe des procédures stockées <<< |
CREATE PROCEDURE et CREATE FUNCTION | ALTER PROCEDURE et ALTER FUNCTION >>> |
20.1.1 Gérer des procédures stockées 20.1 Syntaxe des procédures stockées 20 Procédures stockées et fonctions Manuel de Référence MySQL 4.1 : Version Française ->CREATE PROCEDURE et CREATE FUNCTION . ALTER PROCEDURE et ALTER FUNCTION . DROP PROCEDURE et DROP FUNCTION . SHOW CREATE PROCEDURE et SHOW CREATE FUNCTION |
20.1.1.1 CREATE PROCEDURE et CREATE FUNCTION
La liste de paramètre entre parenthèses est obligatoire. S'il n'y a pas de paramètre, une liste vide sous la forme () doit être utilisée. Chaque paramètre est un paramètre de type IN par défaut. Pour spécifier un autre type, utilisez les mots OUT ou INOUT avant le nom du paramètre. Spécifier IN , OUT ou INOUT n'est valable que pour une PROCEDURE . L'instruction CREATE FUNCTION est utilisée dans les anciennes versions de MySQL pour créer des UDF ( User Defined Functions , fonctions utilisateur). Ajout de nouvelles fonctions à MySQL . Les UDF sont toujours supportées, même avec la présence des procédures stockées. Une UDF peut être considérée comme une fonction stockée. Cependant, notez que les UDF et les fonctions stockées partagent le même espace de noms.Un framework pour développer des procédures stockées externes sera prochainement présenté. Il permettra d'écrire des procédures stockées dans d'autres langages que SQL. Il est probable que l'un des premiers langages supportés sera PHP, car le moteur PHP est compact, compatible avec les threads et peut être facilement intégré. Comme ce framework sera public, il est probable que bien d'autres langages soient supportés. Une fonction est considérée comme ``déterministe'' si elle retourne toujours le même résultat pour les mêmes paramètres d'entrée. Sinon, elle est considérée comme ``non déterministe''. L'optimiseur peut utiliser cette propriété. Actuellement, l'attribut DETERMINISTIC est accepté, mais il n'est pas encore utilisé.L'attribut SQL SECURITY peut être utilisé pour spécifier si la routine doit être exécutée avec les droits de l'utilisateur qui l'a créé ou avec ceux de celui qui appelle la fonction. La valeur par défaut est DEFINER . Cette fonctionnalité est nouvelle en SQL:2003. MySQL n'utilise pas le droit GRANT EXECUTE . Pour le moment, si une procédure p1() utilise la table t1 , l'appelant doit avoir les droits sur la table t1 afin que la procédure p1() puisse réussir.MySQL stocke la configuration SQL_MODE en effet au moment de la création de la procédure, et l'utilisera toujours lors de l'exécution de la procédure. La clause COMMENT est une extension MySQL, et peut servir à décrire la procédure stockée. Cette information est affichée par les commandes SHOW CREATE PROCEDURE et SHOW CREATE FUNCTION .MySQL permet aux routines de contenir des commandes DDL, telle que CREATE et DROP , et des transactions SQL, comme COMMIT . Ce n'est pas obligatoire selon le standard et c'est donc une extension spécifique. Note : Actuellement, les fonctions stockées FUNCTION s ne doivent pas contenir de références aux tables. Notez que cela inclut aussi les commandes SET , mais pas les commandes SELECT . Cette limitation sera supprimée aussitôt que possible.L'exemple suivant est une procédure stockée simple, qui utilise un paramètre de sortie OUT . L'exemple utilise la commande delimiter du client mysql pour modifier le délimiteur de commande avant de définir la procédure. Cela permet au délimiteur ; d'être utilisé dans le corps de la procédure, plutôt que d'être interprété par le client mysql .
L'exemple suivant est une fonction qui prend un paramètre, effectue une opération avec une fonction SQL, et retourne le résultat :
|
<< | CREATE PROCEDURE et CREATE FUNCTION | >> |
Syntaxe des procédures stockées | Gérer des procédures stockées | ALTER PROCEDURE et ALTER FUNCTION |