Maison > Article > base de données > Comment interroger des tables référencées dynamiquement dans des fonctions de procédure stockée ?
Référencement dynamique de tables dans les fonctions de procédure stockée
Lors de la création de fonctions de procédure stockée, vous pouvez rencontrer le besoin de spécifier dynamiquement le nom de la table à interroger. Ce défi se pose car les variables ne peuvent pas être utilisées directement dans la clause FROM d'une instruction SQL au sein d'une fonction en raison de restrictions sur le SQL dynamique.
Instructions préparées comme solution de contournement
Une solution de contournement consiste à utiliser des instructions préparées. Dans les procédures stockées, les instructions préparées peuvent être utilisées pour construire des requêtes SQL dynamiques. Cependant, cette approche ne convient pas aux fonctions car elles interdisent l'utilisation d'instructions préparées.
Procédures stockées avec paramètres OUT
Pour remédier à cette limitation, une méthode alternative implique créer une procédure stockée avec un paramètre OUT qui renvoie la valeur souhaitée. Voici un exemple d'une telle procédure stockée :
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 d'utilisation
Pour utiliser cette procédure stockée, vous devez spécifier les valeurs des variables comme suit :
SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
Cette technique vous permet effectivement d'interroger des noms de tables dynamiques dans les fonctions de procédures stockées en exploitant les procédures stockées avec les 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!