我有一个类似于以下SQL代码的存储过程:
SELECT col1, col2, col3 FROM table1
LEFT JOIN table2
ON table1.col1 = table2.colWhatever
OFFSET @var1 ROWS FETCH NEXT @var2 ROWS ONLY
RETURN @@ROWCOUNT
但是,我并不惊讶它返回的行数等于@ var2,但我想知道在将offset-fetch应用于请求之前我有多少行。
最干净,最有效的方式是什么?
答案 0 :(得分:2)
您可以将COUNT(*) OVER()
添加到SELECT
列表中 - 您将获得总计数作为结果集中的附加列(为每行填充),但是您可以在首次打开时将其取出结果集并从那时起忽略它。
此外,请勿使用RETURN
返回@@ROWCOUNT
- 它是状态和错误代码,而不是数据。使用OUTPUT
参数(但我认为你无论如何都不想要那个值,因为它会返回与你已经知道的@var2
相同的东西。)