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

Comment puis-je sélectionner dynamiquement des données de différentes tables à l'aide de procédures stockées MySQL ?

Susan Sarandon
Libérer: 2024-11-23 12:21:13
original
592 Les gens l'ont consulté

How Can I Dynamically Select Data from Different Tables Using MySQL Stored Procedures?

Sélection de table dynamique à l'aide de variables dans les procédures stockées MySQL

Pour utiliser une procédure stockée dans MySQL pour sélectionner des données dans diverses tables, le nom de la table doit être passé en paramètre. Cependant, rencontrer des problèmes en essayant cela peut être frustrant.

Abordons l'exemple fourni dans lequel le code suivant ne fonctionne pas comme prévu :

CREATE PROCEDURE `usp_SelectFromTables`(
 IN TableName varchar(100)
)
BEGIN
        SELECT * FROM @TableName;
END
Copier après la connexion

L'erreur rencontrée lors de la tentative d'exécution de cette opération le code est que le TableName n'existe pas. Cela est dû au fait que la variable @TableName n'est pas résolue correctement. Pour résoudre ce problème, du SQL dynamique est utilisé.

Le SQL dynamique permet l'exécution d'instructions SQL créées au moment de l'exécution, ce qui le rend idéal pour des situations comme celle-ci. Voici une version corrigée du code utilisant du SQL dynamique :

CREATE PROCEDURE `usp_SelectFromTables`(
 IN TableName varchar(100)
)
BEGIN
        SET @sql_text = CONCAT('SELECT * FROM ', TableName);
        PREPARE stmt FROM @sql_text;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
END
Copier après la connexion

Dans ce code, la fonction CONCAT() est utilisée pour construire l'instruction SQL basée sur le nom de table fourni. L'instruction PREPARE prépare le SQL dynamique pour l'exécution et l'instruction EXECUTE l'exécute. Enfin, l'instruction DEALLOCATE PREPARE désalloue l'instruction préparée, libérant ainsi des ressources.

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