Noms de table dynamiques dans la fonction de procédure stockée
Question :
Comment une procédure stockée peut-elle La fonction accède dynamiquement à une table en fonction d'un paramètre passé, en évitant l'erreur « Le SQL dynamique n'est pas autorisé dans la fonction ou le déclencheur stocké » ?
Réponse :
Pendant que le SQL dynamique n'est pas autorisé dans les fonctions stockées, il existe des approches alternatives. Une option consiste à créer une procédure stockée avec un paramètre OUT et à utiliser des instructions préparées pour créer dynamiquement l'instruction SQL.
Solution :
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>
Exemple Utilisation :
SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
Cette solution de contournement fournit un moyen d'accéder dynamiquement aux tables dans les fonctions de procédure stockée à l'aide d'instructions préparées et de paramètres OUT.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!