sql >> Databáze >  >> RDS >> Mysql

Dynamické názvy tabulek ve funkci uložené procedury

Pokud chcete vytvořit příkaz SQL pomocí identifikátorů, musíte použít připravené příkazy; ale připravené příkazy nelze použít ve funkcích. Můžete tedy vytvořit uloženou proceduru s parametrem 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

Použití příkladu -

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



  1. Jak mohu používat Psycopg2's LoggingConnection?

  2. SQL Server 2016:Vytvořte přihlášení

  3. Příklad replikace Oracle Streams krok za krokem

  4. Jak filtrovat řádky bez NULL ve sloupci