Присвойте значение запроса db переменной t-sql в динамическом запросе - PullRequest
3 голосов
/ 29 сентября 2011

У меня есть это требование для реализации в хранимой процедуре. Динамический запрос к базе данных, чтобы получить счетчик таблицы, сохранить его в переменной t-sql и затем принять некоторые решения на основе этого.

Это хранимая процедура, над которой я работаю. Это вызывает некоторые ошибки, так как я не думаю, что существует простой способ присвоения результата динамического запроса tsql переменной.

CREATE PROCEDURE test
AS
BEGIN
 DECLARE @sql VARCHAR(255)
 DECLARE @cnt int
 SET @sql = 'SELECT COUNT(1) FROM myTable'
 SET @cnt = EXEC(@sql)
 IF (@cnt > 0)
     PRINT 'A'
 ELSE
     PRINT 'B'
END
GO

Может кто-нибудь сказать мне, если есть более простой способ добиться этого с помощью T-SQL?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 29 сентября 2011

альтернатива:

declare @tablename varchar(512) = 'sometable'
declare @sql nvarchar(512) = 'set @count = (select count(*) from ' + @tablename + ')'
declare @count int

execute sp_executesql @sql, N'@count int output', @count=@count output

select case when @count > 0 then 'A' else 'B' end 
0 голосов
/ 29 сентября 2011

Попробуйте это:

 SET @sql = 'SELECT @cnt = COUNT(1) FROM myTable'
 EXEC(@sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...