Хранимая процедура SQL Server - используйте количество строк в запросе выбора - PullRequest
0 голосов
/ 26 февраля 2012

Моя хранимая процедура (SQL Server 2005) возвращает набор данных, где одно поле зависит, среди прочего, от количества строк, возвращаемых запросом. Я могу сделать упрощенный первый запрос, который позволяет мне получить @@ ROWCOUNT, но в этом случае процедура возвращает два набора, а это не то, что мне нужно.

Я попытался поместить первый запрос в оператор WITH, но не нашел синтаксиса для извлечения количества строк и помещения его в переменную, которую я мог бы использовать во втором запросе. Альтернативой может быть получение @@ ROWCOUNT из первого запроса и указание процедуре возвращать только результат второго запроса.

Возможно, есть лучшие способы сделать это, но мой опыт в SQL довольно ограничен ...

Спасибо за любую помощь!

1 Ответ

3 голосов
/ 26 февраля 2012

Это то, что вы ищете?Если нет, не могли бы вы описать вашу проблему более подробно (возможно, с помощью фрагментов кода)

    alter procedure ComplicatedStoredProcedure as
    begin
        declare @lastQueryRowCount int

        -- Storing the number of rows returned by the first query into a variable.
        select @lastQueryRowCount =
            -- First resultset (not seen by caller).
            (select count(*) from A where ID > 100)

        -- Second resultset. This will be the actual result returned from the SP.
        select * from B where SomeDependentField > @lastQueryRowCount
    end
...