使用变量在FROM语句(use variable in FROM statement)

2019-09-22 15:53发布

我试图创建将再次为特定表在各服务器中执行特定数据库查询sys.server

对于每个server.database.dbo.table我想知道的内容。

所以,我需要的是这样的:

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1

while @i <= @numrows
BEGIN
declare @servername varchar(max) = (select servernaam from #servers where rij = @i)

select * from @servername.DATABASE.DBO.TABLE

set @i = @i+1

END

然而, @servername@servername.DATABASE.DBO.TABLE似乎并没有工作。

建议? 感谢您与我的想法。

Answer 1:

你必须使用动态SQL:

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1
declare @Sql(1000)
declare @servername varchar(max)

while @i <= @numrows
BEGIN
select @servername = servernaam 
from #servers where rij = @i

set @Sql = 'select * from '+@servername+'.DATABASE.DBO.TABLE'
exec(@Sql)

set @i = @i+1

END

下面是关于高管更多的信息。



文章来源: use variable in FROM statement