Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine Tabellennamenvariable in einer SQL-Abfrage verwenden?

Wie kann ich eine Tabellennamenvariable in einer SQL-Abfrage verwenden?

DDD
Freigeben: 2025-01-23 06:31:09
Original
956 Leute haben es durchsucht

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

Variablen als Tabellennamen verwenden

Frage:

Wenn Sie versuchen, eine Abfrage mit einem in einer Variablen gespeicherten Tabellennamen (z. B. „@tablename“) auszuführen, erhalten Sie eine Fehlermeldung, die besagt, dass die Tabellenvariable „@tablename“ deklariert werden muss.

Lösung:

In einer statischen Abfrage wie der in der Frage gezeigten müssen die Tabellen- und Spaltennamen statisch sein. Bei dynamischen Abfragen mit dynamisch gefüllten Tabellennamen muss das komplette SQL dynamisch generiert und mit sp_executesql ausgeführt werden.

Beispiel:

Angenommen, wir möchten Daten aus derselben Tabelle in verschiedenen Datenbanken vergleichen. Eine statische Abfrage sieht so aus:

<code class="language-sql">SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]</code>
Nach dem Login kopieren

Um diese Abfrage dynamisch zu gestalten, können Schema und Tabellenname als Variablen festgelegt werden:

<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>
Nach dem Login kopieren

Mithilfe von sp_executesql kann dynamisch generiertes SQL ausgeführt werden.

Weitere Hinweise:

Dynamische Abfragen erfordern sorgfältige Überlegung und Wartung. Es wird empfohlen, sich mit den Details von dynamischem SQL vertraut zu machen, bevor Sie solche Abfragen in Ihren Code implementieren.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Tabellennamenvariable in einer SQL-Abfrage verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage