sql >> Database >  >> RDS >> Mysql

Dynamische tabelnamen in de functie voor opgeslagen procedures

Als je een SQL-statement wilt samenstellen met identifiers, dan moet je voorbereide statements gebruiken; maar voorbereide instructies kunnen niet in functies worden gebruikt. U kunt dus een opgeslagen procedure maken met de OUT-parameter -

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

Voorbeeld gebruiken -

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



  1. Hoe verwijder ik een vast aantal rijen met sorteren in PostgreSQL?

  2. Verbinding maken met MySQL met Python

  3. AANGEPASTE BESTELLING OP Uitleg:

  4. Maak geneste JSON-arrays met FOR JSON PATH