Pour exécuter une requête avec variable dans une procédure stockée, il faut utiliser les statement.
Vous formez votre requête en utilisant la fonction CONCAT()
et stockez votre requête dans une variable (ligne 7). Une fois votre requête stockée, votre préparez le « statement » et l’exécutez à l’aide de PREPARE
et EXECUTE
(ligne 7 & 8).
Exemple d’une procédure qui calcule la moyenne des valeurs d’une colonne.
DELIMITER $$
DROP PROCEDURE IF EXISTS `getAverage`$$
CREATE PROCEDURE `getAverage`(tbl CHAR(45), colCHAR(45))
BEGIN
SET @q = CONCAT('SELECT AVG(`', col, '`) FROM ', tbl);
PREPARE stmt FROM @q;
EXECUTE stmt;
END
$$
DELIMITER ;
Pour exécuter la procédure :
CALL getAverage('matable', 'macolonne');
matable
est le nom de votre table et macolonne
le nom de votre colonne.