Sql server 如何逐页获取数据并对列进行排序

Sql server 如何逐页获取数据并对列进行排序,sql-server,Sql Server,如何创建SP,使用它可以获得结果页vise。我想将pageSize、pageNo、sortCol和direction传递到SP,并希望得到基于此信息的结果。我可以在SP的逻辑中处理此问题吗 Table1 { First, Last, Location } SP_GetAll(pageNo=3, pageSize=10, sortCol="First", direction="ASC") SQL Server 2008为此提供的任何新功能?您可能会发现一个内联表值函数(TVF)比存储过程更适合

如何创建SP,使用它可以获得结果页vise。我想将pageSize、pageNo、sortCol和direction传递到SP,并希望得到基于此信息的结果。我可以在SP的逻辑中处理此问题吗

Table1 { First, Last, Location }

SP_GetAll(pageNo=3, pageSize=10, sortCol="First", direction="ASC")

SQL Server 2008为此提供的任何新功能?

您可能会发现一个内联表值函数(TVF)比存储过程更适合此功能。原因是结果可以参与其他查询

在select语句的开头,包括以下内容:

SELECT  TOP (100) PERCENT ROW_NUMBER() OVER (ORDER BY ...
WHERE   (Table.rowNo BETWEEN (@pageNumber - 1) * @pageSize + 1 
         AND @pageNumber * @pageSize)
在select语句的末尾,输入以下内容:

SELECT  TOP (100) PERCENT ROW_NUMBER() OVER (ORDER BY ...
WHERE   (Table.rowNo BETWEEN (@pageNumber - 1) * @pageSize + 1 
         AND @pageNumber * @pageSize)

如果数据集很大,(或查询复杂),考虑将结果假脱机到临时表并围绕临时表进行寻呼。

2008中没有新的,而2005是新的。通常的方法是使用
行编号()
,然后选择两个值之间的记录。不过,SQLServer2011提供了更简单的解决方案。