在sql server查询中使用动态表名

时间:2018-03-14 09:11:28

标签: sql-server sql-server-2008 sql-server-2012

我有一个Error表,用于存储发生错误的的名称。 现在我想使用从“错误”表中选择的表名来查询表。

我尝试将表名存储在变量中,并在查询中的FROM子句中使用此变量。但这不起作用:

DECLARE @tableName VARCHAR(15)

select @tableName = TableName from SyncErrorRecords where Status = 'Unsynced'

select * from @tableName

任何人都可以帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要使用Dynamic SQL

或者

declare @sql nvarchar(max)
select @sql = 'select * from ' + quotename(@tableName)

exec (@sql)

exec sp_executesql @sql

答案 1 :(得分:0)

查询如下。

DECLARE @tableName VARCHAR(15),
        @Qry VARCHAR(4000)
SELECT @tableName = TableName FROM SyncErrorRecords WHERE Status = 'Unsynced'
SET @Qry = 'SELECT * FROM ' +  @tableName
EXEC SP_EXECUTESQL @Qry