Offset Fetch Next 获取所有行

问题描述 投票:0回答:1

我在 SQL Server 2012 中有一个查询,它应该根据我指定的页面大小及其所在的页面返回许多记录。 看起来像这样:


SELECT LocID, LocName
FROM Locations
ORDER BY LocName OFFSET @PageNum ROWS
FETCH NEXT @PageSize ROWS ONLY

代码非常简单。 不过,我需要做的是将其放入函数中以正确返回分页。 但是,我也可能需要从此函数返回所有记录,因此我需要选择在没有任何 OFFSET 或 FETCH 的情况下调用该函数(大多数情况下,这是针对没有分页并且应该只是直接数据的报告) 。 我想不出一个好的方法来做到这一点。

pagination sql-server-2012
1个回答
14
投票

你可以说:

@PageNum  INT,
@PageSize INT

...

SELECT @PageSize = COALESCE(@PageSize, 2000000000);   
-- 2 billion should be enough?

... OFFSET (COALESCE(@PageNum, 1)-1)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;

当您只需要所有行时,请将 NULL 传递给两个参数。

© www.soinside.com 2019 - 2024. All rights reserved.