Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Passando o nome da coluna como um parâmetro na função armazenada do mysql


Há alguns problemas com sua abordagem. Em primeiro lugar, você não pode usar seu argumento valor para referenciar a coluna subjacente. O bom é que você pode usar Declarações preparadas como solução para isso.

O segundo problema é que as funções do MySQL não permitem o uso de instruções preparadas. Para contornar essa limitação, você precisa usar Stored Procedures. Como um exemplo:
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