Mysql
 sql >> Base de données >  >> RDS >> Mysql

Passer le nom de la colonne en tant que paramètre dans la fonction stockée mysql

Il y a quelques problèmes avec votre approche. Tout d'abord, vous ne pouvez pas utiliser votre argument valeur pour référencer la colonne sous-jacente. La bonne chose est que vous pouvez utiliser Déclarations préparées comme solution de contournement pour cela.

Le deuxième problème est que les fonctions MySQL ne permettent pas l'utilisation d'instructions préparées. Pour contourner cette limitation, vous devez utiliser des procédures stockées à la place. Par exemple :

CREATE PROCEDURE test_func (IN col1 varchar(100), OUT res int)
BEGIN

SET @s=CONCAT('SELECT ',col1,' INTO @res FROM yourtable WHERE id=1');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

SELECT @res INTO res;

END