Maison > base de données > tutoriel mysql > Comment puis-je utiliser une variable de nom de table dans une requête SQL ?

Comment puis-je utiliser une variable de nom de table dans une requête SQL ?

DDD
Libérer: 2025-01-23 06:31:09
original
916 Les gens l'ont consulté

How Can I Use a Table Name Variable in a SQL Query?

Utiliser des variables comme noms de table

Question :

Lorsque vous essayez d'exécuter une requête en utilisant un nom de table stocké dans une variable (comme "@tablename"), vous recevez une erreur indiquant que la variable de table "@tablename" doit être déclarée.

Solution :

Dans une requête statique comme celle présentée dans la question, les noms de table et de colonne doivent être statiques. Pour les requêtes dynamiques avec des noms de table renseignés dynamiquement, le SQL complet doit être généré et exécuté dynamiquement à l'aide de sp_executesql.

Exemple :

Supposons que nous souhaitions comparer les données de la même table dans différentes bases de données. Une requête statique ressemble à ceci :

<code class="language-sql">SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]</code>
Copier après la connexion

Pour rendre cette requête dynamique, le schéma et le nom de la table peuvent être définis comme variables :

<code class="language-sql">declare @schema sysname;
declare @table sysname;
declare @query nvarchar(max);

set @schema = 'dbo';
set @table = 'ACTY';

set @query = '
SELECT * FROM [DB_ONE].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) + '
EXCEPT
SELECT * FROM [DB_TWO].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table);

EXEC sp_executesql @query;</code>
Copier après la connexion

En utilisant sp_executesql, du SQL généré dynamiquement peut être exécuté.

Autres notes :

Les requêtes dynamiques nécessitent un examen et une maintenance minutieux. Il est recommandé de vous familiariser avec les détails du SQL dynamique avant d'implémenter de telles requêtes dans votre code.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal