【发布时间】:2015-07-06 21:21:04
【问题描述】:
我对 Dynamic SQL 和一般的 SQL Server 还是很陌生,但我想遍历 information_schema.tables 中的一个表列表。每次迭代都有一个 varchar 变量列出要在表名 (where table_name like concat('USA_RETHHDs_%', @Month)) 中搜索的月份-年份。
然后,每个具有匹配日期的表都将被放入一个varchar 变量中。问题是,我想从information_schema.tables 列表中获取table 变量,但我不确定如何做到这一点。结果,我尝试走动态路线,将varchar 变量嵌入到动态SQL 查询中。但是,它需要一个table 变量而不是varchar。
declare @Month varchar(6)
declare @Table varchar(32)
declare @sql nvarchar(max)
declare @MonthCount int
while @MonthCount > 0
begin
select @Month = DateSuffix from @DateTable where Row = @MonthCount
select @Table = table_name from information_schema.tables where table_name like concat('USA_RETHHDs_%', @Month)
select @Table = concat('dbo.', @Table)
set @sql = 'select * from @Table'
execute SP_EXECUTESQL @sql
select @MonthCount = @MonthCount - 1
end
【问题讨论】:
标签: sql-server dynamic-sql table-variable