我在SQL Server 2012中有一个查询,该查询应根据我指定的页面大小及其所在的页面取回许多记录。看起来像这样:
SELECT LocID, LocNameFROM LocationsORDER BY LocName OFFSET @PageNum ROWSFETCH NEXT @PageSize ROWS ONLY
代码很简单。不过,我需要将其放入函数中以正确返回分页。但是,我可能还需要从该函数返回所有记录,因此我需要选择在没有任何OFFSET或FETCH的情况下调用该函数(大多数情况下,这是针对没有分页并且仅应为纯数据的报表) 。我想不出一个很好的方法来做到这一点。

最佳答案

你可以说:

@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传递给两个参数。

关于paging - 偏移获取下一步以获取所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12375837/

10-12 17:38