Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Übergeben des Spaltennamens als Parameter in einer gespeicherten mysql-Funktion

Es gibt ein paar Probleme mit Ihrem Ansatz. Zunächst einmal können Sie Ihr Argument Wert nicht verwenden um auf die zugrunde liegende Spalte zu verweisen. Das Gute ist, dass Sie Prepared Statements verwenden können als Problemumgehung dafür.

Das zweite Problem besteht darin, dass MySQL-Funktionen die Verwendung von vorbereiteten Anweisungen nicht zulassen. Um diese Einschränkung zu umgehen, müssen Sie stattdessen gespeicherte Prozeduren verwenden. Als Beispiel:

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