Offset Fetch接下来获取所有行

Cry*_*lue 8 paging sql-server-2012

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


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

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

Aar*_*and 11

你可以说:

@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;
Run Code Online (Sandbox Code Playgroud)

当您只想要所有行时,将NULL传递给两个参数.

  • 当我将 NULL 传递给两个参数时,出现以下错误:为 TOP 或 FETCH 子句行计数参数提供的行数必须是整数。 (2认同)