如何在动态SQL中设置包含另一个变量的变量

时间:2018-11-05 09:31:43

标签: sql sql-server-2008

这是我的查询:-

declare @a nvarchar (150)
declare @b nvarchar (100)
set @b= 'Test'
set @a =('select COUNT(*) from ' +@b + '.dbo.t_ddl_log')
exec (@a)
if (@a='0')
print 'True'
else
print 'False'

即使应打印True,也始终打印False。
如果我在计数查询中使用Test更改变量@b,则可以正常使用。
查询中出了什么问题?

1 个答案:

答案 0 :(得分:1)

问题不在于查询-问题在于您错误地认为@a应该保存查询的结果,而实际上它保存查询本身。

您可以使用sp_executeSql来获得所需的结果:

declare @a nvarchar (150),
        @b nvarchar (100),
        @c int
set @b= 'Test'
set @a =('select @count = COUNT(*) from ' +@b + '.dbo.t_ddl_log')

exec sp_executeSql @a, N'@count int output', @c = @count output

if (@c= 0)
    print 'True'
else
    print 'False'