SQL SERVER TOP分页是我们经常会用到的,下面就对SQL SERVER 2000中SQL SERVER TOP分页的方法进行详尽的阐述,如果您感兴趣的话,不妨一看。
SQL SERVER 2000中SQL SERVER TOP分页的方法:
- CREATE PROCEDURE [Zhzuo_GetItemsPage]
- @PageIndex INT, /@PageIndex从计数,0为第一页/
- @PageSize INT, /页面大小/
- @RecordCount INT OUT, /总记录数/
- @PageCount INT OUT /页数/AS/获取记录数/
- SELECT @RecordCount = COUNT() FROM Production.Product
- /计算页面数据/
- SET @PageCount = CEILING(@RecordCount 1.0 / @PageSize)
- /TOP记录数/
- DECLARE @TOPCOUNT INT
- SET @TOPCOUNT = @RecordCount - @PageSize @PageIndex
- DECLARE @SQLSTR NVARCHAR(1000)
- IF @PageIndex = 0 OR @PageCount <= 1
- BEGIN
- SET @SQLSTR =N‘SELECT TOP ‘+STR(@PageSize)+
- ‘ProductID,Name FROM Production.Product ORDER BY ProductID DESC‘
- END
- ELSE
- BEGIN
- IF @PageIndex = @PageCount - 1
- BEGIN
- SET @SQLSTR =N‘SELECT FROM ( SELECT TOP ‘ + STR(@TOPCOUNT) +
- ‘ProductID,Name FROM Production.Product ORDER BY ProductID ASC) T ORDER BY ProductID DESC‘
- END
- ELSE
- BEGIN
- SET @SQLSTR =N‘ SELECT TOP ‘+STR(@PageSize)+‘ FROM (SELECT TOP ‘ + STR(@TOPCOUNT) +
- ‘ProductID,Name FROM Production.Product ORDER BY ProductID ASC) T ORDER BY ProductID DESC‘
- END
- END/执行/
- EXEC (@SQLSTR)
以上存储过程对页数进行判断,如果是第一页或最后一页,进行特殊处理。其他情况使用2次TOP翻转。其中排序条件为ProductID倒序。最后通过EXECUTE执行SQL字符串拼串。
【编辑推荐】