sql exec计数中的语法错误

时间:2015-08-21 04:26:14

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

declare @message int,@DBName varchar(50)    
set @DBName ='AutoChip'    

exec('select '+@message+'= count(*) from '+@DBname+'.[dbo].[Report List]')    

print @message

尝试打印计数时出错

  

Msg 102,Level 15,State 1,Line 1
  ' ='附近的语法不正确。

我将动态传递DBname,我正在使用游标

1 个答案:

答案 0 :(得分:2)

变量名称必须是您正在创建的动态SQL的一部分,但不应该与它进行仲裁。 例如,如果您的变量的类型为varchar且值为“ERROR”,则生成的查询将为

select ERROR= count(*) from YOURDBNAME.[dbo].[Report List] 

所以正确的一个在下面。

 exec('select @message= count(*) from '+@DBname+'.[dbo].[Report List]') 

您需要在动态sql中包含变量声明和初始化。您无法在动态sql中设置外部变量的值,因为执行的上下文将有所不同。