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

Dynamische Tabellennamen in Stored-Procedure-Funktion

Wenn Sie eine SQL-Anweisung mit Bezeichnern erstellen möchten, müssen Sie vorbereitete Anweisungen verwenden. vorbereitete Anweisungen können jedoch nicht in Funktionen verwendet werden. Sie können also eine gespeicherte Prozedur mit dem OUT-Parameter -

erstellen
CREATE PROCEDURE getName
 (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN

  SET @GetName =
    CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE id=', myId);
  PREPARE stmt FROM @GetName;
  EXECUTE stmt;

  SET myName = @var1;
END

Beispiel verwenden -

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;