sql >> Databasteknik >  >> RDS >> Mysql

Dynamiska tabellnamn i lagrad procedurfunktion

Om du vill bygga en SQL-sats med hjälp av identifierare, måste du använda förberedda satser; men förberedda satser kan inte användas i funktioner. Så du kan skapa en lagrad procedur med parametern OUT -

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

Med exempel -

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



  1. Efterstående noll

  2. IF-THEN-ELSE-satser i postgresql

  3. Hur man visar sorteringen av en tabell i MySQL

  4. Hur man konverterar en sträng till ett datum/tid i SQL Server med hjälp av PARSE()