sql >> Database teknologi >  >> RDS >> Sqlserver

Et tabelnavn som en variabel

For statiske forespørgsler, som den i dit spørgsmål, skal tabelnavne og kolonnenavne være statiske.

For dynamiske forespørgsler skal du generere den fulde SQL dynamisk og bruge sp_executesql til at udføre den.

Her er et eksempel på et script, der bruges til at sammenligne data mellem de samme tabeller i forskellige databaser:

Statisk forespørgsel:

SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]

Da jeg nemt vil ændre navnet på table og schema , Jeg har oprettet denne dynamiske forespørgsel:

declare @schema varchar(50)
declare @table varchar(50)
declare @query nvarchar(500)

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

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

EXEC sp_executesql @query

Da dynamiske forespørgsler har mange detaljer, der skal overvejes, og de er svære at vedligeholde, anbefaler jeg, at du læser:Forbandelsen og velsignelserne ved dynamisk SQL



  1. Installer MariaDB på en Mac

  2. MySQL JDBC Driver 5.1.33 - Tidszoneproblem

  3. Sådan får du den sidste dag i måneden i T-SQL

  4. Postgres COUNT antal kolonneværdier med INNER JOIN