Jonathan Beliën

Jonathan Beliën

Freelance Web Developer

« Spécialiste » en cartographie numérique
Membre du conseil d'administration d'OpenStreetMap Belgique
Membre du conseil d'administration d'Open Knowledge Belgique
Fan de LEGO et de bande-dessinées



MySQL: Requête avec variable dans une procédure stockée

Publié le 21.10.2012

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.