Maison >base de données >tutoriel mysql >Comment puis-je accéder à des tables nommées dynamiquement dans une fonction SQL ?
Noms de table dynamiques dans la fonction de procédure stockée
En SQL, les fonctions sont immuables et ne peuvent pas modifier les données. Par conséquent, les instructions préparées ne peuvent pas être utilisées dans les fonctions, ce qui pose un défi lors de la tentative d'accès à des tables avec des noms dynamiques.
Pour surmonter ce problème, une procédure stockée peut être utilisée. Les procédures stockées peuvent utiliser des instructions préparées et des paramètres OUT pour renvoyer des valeurs.
Voici un exemple de procédure stockée qui peut récupérer un nom à partir d'une table spécifiée dynamiquement :
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>
Pour utiliser la procédure , les paramètres IN sont définis avec le nom et l'ID de la table, tandis qu'un paramètre OUT est utilisé pour récupérer le nom.
SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
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!