Как установить переменную, которая включает другую переменную в динамическом SQL - PullRequest
0 голосов
/ 05 ноября 2018

Вот мой запрос: -

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'

Он всегда печатает False, хотя должен печатать True.
Если я изменю переменную @b с помощью Test в моем запросе на подсчет, он будет работать нормально.
В чем проблема в запросе ??

1 Ответ

0 голосов
/ 05 ноября 2018

Проблема не в запросе - проблема в том, что вы ошибочно думаете, что @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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...