1

我有一个类似于以下 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 的行数,但我想知道在将偏移提取应用于请求之前我有多少行。

最干净和最有效的方法是什么?

4

1 回答 1

2

您可以添加COUNT(*) OVER()SELECT列表中 - 您将获得总计数作为结果集中的附加列(为每一行填充),但您可以在第一次打开结果集时将其拉出并从那时起忽略它。

此外,不要RETURN用于返回@@ROWCOUNT- 它用于状态和错误代码,而不是用于数据。使用一个OUTPUT参数(但我假设你并不真的想要那个值,因为它会返回与@var2你已经知道的相同的东西)。

于 2013-08-06T12:32:02.713 回答