У меня есть процедура для возврата набора результатов, который ограничен номером страницы и некоторыми другими вещами. В качестве выходного параметра мне нужно вернуть общее количество выбранных строк в соответствии с параметрами, кроме номера страницы. Итак, у меня есть что-то вроде этого:
WITH SelectedItems AS
(SELECT Id, Row1, Row2, ROW_NUMBER() OVER (ORDER BY Row1) AS Position
FROM Items
WHERE Row2 = @Row2)
SELECT Id, Row1, Row2
FROM SelectedItems
WHERE Position BETWEEN @From AND @To
И тогда мне нужно установить параметр OUTPUT на количество строк во внутреннем запросе. Я могу просто скопировать запрос и подсчитать его, но этот запрос может возвращать тысячи строк (и их будет больше в будущем), поэтому я ищу способ сделать это с хорошей производительностью. Я думал о табличных переменных, это хорошая идея? Или любые другие предложения?
Чтобы быть более конкретным, это Microsoft SQL Server 2008.
Спасибо, Ян