Einleitung:
Der Versuch, eine Variable als Tabellennamen in einer statischen Abfrage zu verwenden, führt zu der Fehlermeldung „Tabellenvariable muss deklariert werden“. In diesem Artikel wird die korrekte Methode zum dynamischen Auffüllen von Tabellennamen untersucht.
Lösung:
Bei statischen Abfragen müssen Tabellennamen und Spaltennamen statisch sein. Dynamische Abfragen ermöglichen jedoch die dynamische Generierung vollständiger SQL-Anweisungen, die mit sp_executesql
ausgeführt werden können.
Stellen Sie sich das folgende Szenario vor:
declare @tablename varchar(50) set @tablename = 'test' select * from @tablename
Diese statische Abfrage schlägt fehl, da der Tabellenname dynamisch zugewiesen wird.
Beispiel für eine dynamische Abfrage:
Das folgende Skript zeigt, wie dynamische Abfragen verwendet werden, um Daten in zwei Datenbanken zu vergleichen:
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
In diesem Beispiel sind die Tabellennamen und das Schema dynamisch, was einen einfachen Vergleich von Daten in verschiedenen Datenbanken ermöglicht.
Hinweis:
Dynamische Abfragen erfordern sorgfältige Überlegung und Wartung. Es wird empfohlen, Ressourcen wie „The Curse and Blessing of Dynamic SQL“ zu konsultieren, um mehr über Best Practices zu erfahren.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Variable als Tabellennamen in SQL-Abfragen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!