sql >> Base de Datos >  >> RDS >> Mysql

Pasar el nombre de la columna como un parámetro en la función almacenada mysql

Hay un par de problemas con su enfoque. En primer lugar, no puede usar su argumento valor para hacer referencia a la columna subyacente. Lo bueno es que puedes usar Declaraciones preparadas como solución para esto.

El segundo problema es que las funciones de MySQL no permiten el uso de declaraciones preparadas. Para solucionar esa limitación, debe usar Procedimientos almacenados en su lugar. Como ejemplo:

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