l'appel de procédure stockée avec un paramètre de sortie
Ci-joint je vous ai donné la procédure stockée "GetAvgOut":
delimiter //
DROP PROCEDURE IF EXISTS GetAvgOut//
CREATE DEFINER = 'MailIntimator'@'127.0.0.1' PROCEDURE GetAvgOut(OUT average INT,IN col VARCHAR(30),IN tbl VARCHAR(30))
READS SQL DATA
COMMENT 'returns average'
BEGIN
SET @userVar = CONCAT(' SELECT AVG( ' , col , ' ) FROM ' , tbl );
PREPARE stmt FROM @userVar;
EXECUTE stmt;
END;
//
delimiter ;
J'ai essayé d'appeler le aforeseen procédure de l'aide,
CALL GetAvgOut(@a,'Population','city');
SELECT @a;
"select @un" renvoie la valeur null. Comment puis-je obtenir la moyenne qui est attribué à paramètre de sortie "@a"?
- pourquoi la moyenne est de déclarer que int , et non pas d'un flotteur type de champ ?
- essayez : APPEL GetAvgOut(@moyenne, "Population", "ville"); SELECT @moyenne;
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas mysql expert, mais vous n'avez pas besoin de faire référence à la variable à tout moment et de lui assigner une valeur?
Par exemple comme on le voit sur http://dev.mysql.com/doc/refman/5.0/en/call.html:
HTH
Phil'
vous n'avez pas réglé le paramètre de SORTIE dans votre sélection.
essayez de mettre à jour votre déclaration:
Comme @Philippe mentionné, vous devez définir la valeur de la variable. Combinant @Josh et @Philip réponse donne quelque chose comme ceci