Mysql
 sql >> Database >  >> RDS >> Mysql

Passaggio del nome della colonna come parametro nella funzione archiviata in mysql

Ci sono un paio di problemi con il tuo approccio. Prima di tutto non puoi usare il tuo argomento valore per fare riferimento alla colonna sottostante. La cosa buona è che puoi usare Dichiarazioni preparate come soluzione per questo.

Il secondo problema è che le funzioni MySQL non consentono l'uso di Prepared Statements. Per aggirare questa limitazione è necessario utilizzare invece le stored procedure. Ad esempio:

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