我在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/