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

#sql #tsql #stored-procedures

Вопрос:

У меня есть сложный и потенциально большой или потенциально пустой запрос, который в настоящее время отображается только в окне :

 CREATE PROCEDURE dbo.GetComplexResultset @arg1 as nvarchar(10), ..., @argN int , @startwindow INT=0, @windowsize INT=20
AS 

..... (T-SQL bits here)

GO 

CREATE PROCEDURE dbo.GetCountComplexResultset @arg1 as NVARCHAR(10), ..., @argN INT
AS 

exec dbo.GetComplexResultset @arg1, ..., @argN, 0, 10000

Select @@Rowcount

GO
 

По замыслу , dbo.GetComplexResultset создан для отображения небольшого окна результатов. Я ожидаю, что ComplexResultset будет сложным и будет меняться достаточно часто, чтобы не хотелось синхронизировать две хранимые процедуры.

Вызываю dbo.GetCountComplexResultset возвращает как набор результатов, так и количество строк.

Мне просто нужно количество строк.

Есть ли способ очистить возвращаемый результат ?

Комментарии:

1. Трудно сказать без дополнительной информации о том, что на самом деле делает эта процедура — создает ли она несколько наборов результатов? возвращает ли он один столбец или несколько столбцов? Вы можете использовать insert exec , чтобы предотвратить возврат результирующего набора, или, возможно, передать дополнительный параметр для управления тем, что он делает, но для большей ясности потребуется более подробная информация.

2. OUTPUT Возможно, параметр? Честно говоря, вам, вероятно, следует просто сохранить это как одну процедуру

3. Стью — Почему это «трудно сказать»? Я просто хочу очистить накопленный набор результатов. Charlieface — я думал об этом, но набор результатов все равно возвращается. Если это «очень большой» набор результатов, я не хочу возвращать 10 000 записей

4. @SeanMunson поскольку мы не можем видеть, что делает ваша процедура, я реализовал решения именно для этого требования, но реализация будет зависеть от внутренних компонентов.

5. Если это одна процедура, то на основе параметров можно решить, возвращать ли только количество или весь набор