Maison > base de données > tutoriel mysql > le corps du texte

Comment interroger des tables référencées dynamiquement dans des fonctions de procédure stockée ?

Susan Sarandon
Libérer: 2024-11-06 09:28:02
original
788 Les gens l'ont consulté

How to Query Dynamically Referenced Tables in Stored Procedure Functions?

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>
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!