这是我的查询:-
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,则可以正常使用。
查询中出了什么问题?
答案 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'