Не отображать динамический запрос в результате - PullRequest
1 голос
/ 08 апреля 2010

Можно ли скрыть динамический запрос из наборов результатов, предоставленных хранимой процедурой?

Я использую @@rowcount динамического запроса, чтобы установить переменную, которая используется для определения, выполняется ли другой запрос.

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

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

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

-- Create query
declare @query nvarchar(max)
set @query = 'select ' + @entityname + 'id from ' + @entityname + ' where ' + @entityname + 'id = ' + cast(@entityid as nvarchar(100))

-- Insert into to temp table - no new result set displayed!
declare @tbl table (EntityID int not null primary key)
insert into @tbl
    exec (@query)

-- Retrieve variable from temporary table
declare @count int
select @count = count(*) from @tbl

Выше приведен код, который я использовал в итоге.

0 голосов
/ 08 апреля 2010

Попробуйте обернуть динамический запрос следующим образом:

Set @query = 'SELECT COUNT(*) FROM (' + @Query + ') t'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...