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,我正在使用游标
答案 0 :(得分:2)
变量名称必须是您正在创建的动态SQL的一部分,但不应该与它进行仲裁。
例如,如果您的变量的类型为varchar
且值为“ERROR”,则生成的查询将为
select ERROR= count(*) from YOURDBNAME.[dbo].[Report List]
所以正确的一个在下面。
exec('select @message= count(*) from '+@DBname+'.[dbo].[Report List]')
您需要在动态sql中包含变量声明和初始化。您无法在动态sql中设置外部变量的值,因为执行的上下文将有所不同。