Nom de table dynamique dans la procédure stockée MySQL
Lorsque vous travaillez avec des bases de données relationnelles, la sélection de données dans différentes tables est une exigence courante. Pour éviter de créer plusieurs procédures stockées pour chaque table, les développeurs recherchent souvent des moyens d'utiliser dynamiquement une variable pour représenter le nom de la table dans une procédure stockée.
Une approche consiste à utiliser des instructions préparées. Considérez la procédure stockée suivante :
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
Les instructions préparées vous permettent de construire des requêtes SQL dynamiques en liant des variables à des espaces réservés. Dans ce cas, la variable TableName est liée à l'espace réservé dans la requête SQL. Lorsque la procédure stockée est exécutée, le nom réel de la table est remplacé dans la requête, permettant ainsi la sélection à partir de la table spécifiée.
Cependant, il est important de noter que l'exemple que vous avez fourni a tenté d'utiliser directement la variable @TableName. dans la requête sans liaison. Cette approche est incorrecte et entraînerait une erreur de syntaxe. Pour résoudre le problème, vous devez utiliser la technique décrite ci-dessus, qui consiste à utiliser des instructions préparées et à lier explicitement la variable à l'aide de l'instruction SET.
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!