未声明表变量错误的SQL Server动态SQL

时间:2016-08-04 20:05:55

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

我正在尝试在SQL Server 2008上运行动态SQL查询:

DECLARE @cmd nvarchar(MAX)
DECLARE @tempTBL TABLE(value1 float)

SET @cmd = 'insert into ' + @tempTBL + ' select value from  table11 as  tb1  inner join table2  as tb2 on tb1.id = tb2.id where tb1.id2=''active'''

EXEC (@cmd )

我收到错误:

  

必须声明标量变量“@tempTBL”。

如果我尝试

'insert into  @tempTBL ...'
发生同样的错误。

我不想将"declare @tempTBL"放在@cmd中,因为它会在循环中运行。

为什么会出现此错误?

1 个答案:

答案 0 :(得分:1)

您根本不需要在这里使用动态SQL。

declare @tempTBL table(value1 float)

insert into @tempTBL
select value 
from table11 as tb1  
inner join table2 as tb2 on tb1.id = tb2.id 
where tb1.id2 = 'active'