2010-11-22 5 views
1

Puis-je utiliser des paramètres nommés pour les procédures stockées dans MySQL? Je dois appeler des procédures stockées quelque chose comme ceci:Paramètres nommés pour les procédures stockées dans MySQL

CALL stored_procedure(@param1 = "foo1", @param2 = "foo2"); 

La réponse est

CALL stored_procedure(@param1 := "foo1", @param2 := "foo2"); 

Merci pour Pentium10.

Répondre

3

Ceci n'est pas formellement possible.

Mais il existe une solution de contournement qui peut aider. Utilisez ceci:

CALL prcInsertStuff ( 
@paramName1 := nameValue1 
, @paramValue1 := paramValue1 
); 
+0

Salut Pentium10, unfortunatelly il ne me aider. J'ai besoin de paramètres vraiment nommés. Merci quand même. – Worker

+0

Vous ne pouvez pas faire cela. Mais vous pouvez passer un nom et une variable par paire. – Pentium10

+0

Ah! Je vois! Cela semble beaucoup mieux. Gimme quelques secondes pour le test s'il vous plaît :-) – Worker

4

Les procédures stockées MySQL ne prennent pas en charge les paramètres nommés dans n'importe quel ordre. La demande de fonctionnalité a été faite dans le passé, par exemple:

Comme vous avez découvert, la solution de contournement à utiliser des expressions pour définir des variables de session n'a rien à voir avec l'ordre des paramètres. En d'autres termes, vous pouvez effectuer les opérations suivantes:

CALL stored_procedure(@param1 := "foo1", @param2 := "foo2"); 

Mais les valeurs « foo1 » et « foo2 » sont toujours les premier et second paramètres, respectivement.

Si vous souhaitez plus de flexibilité, je vous suggère d'écrire votre procédure stockée pour accepter les paramètres , mais utilisez directement les variables de session.

SET @param1 := "foo1", @param2 := "foo2"; 
CALL stored_procedure(); 

Dans votre procédure, vous devez ensuite référencer les variables comme @param1, @param2, etc.

CREATE PROCEDURE stored_procedure() 
BEGIN 
    SELECT * FROM mytable WHERE col1 = @param1 AND col2 = @param2; 
END 

Lire http://dev.mysql.com/doc/refman/5.7/en/user-variables.html

Questions connexes