将结果用作mssql中select语句的表名

时间:2013-06-21 19:33:36

标签: sql-server dynamic-sql

任何使用查询结果作为select语句的表名的方法。我正在尝试下面的查询@tblname是jsut结果集而不是我需要的字符串结果:

declare @tblname varchar(50)
declare @sql nvarchar(1000)
declare @stand  varchar(20)
set @stand = 'test'
set @sql = 'select @temp=atbl.table_name from test_products wap inner join attribute_tables atbl on (atbl.id = wap.colors_tbl_id) where wap.dept = @stand'
execute sp_executesql @sql, N'@stand nvarchar(20),@temp nvarchar(50) OUTPUT', @stand=@stand, @temp = @tblname OUTPUT
declare @test nvarchar(30)
set @test = @tblname
set @sql = 'SELECT * FROM @tblname'
execute(@sql)

1 个答案:

答案 0 :(得分:1)

您需要连接 SQL字符串:

...
set @sql = 'SELECT * FROM ' + @tblname
execute(@sql)

无法参数化表名和列名。