SQL SERVER 2000中SQL SERVER TOP分頁(yè)的方法
SQL SERVER TOP分頁(yè)是我們經(jīng)常會(huì)用到的,下面就對(duì)SQL SERVER 2000中SQL SERVER TOP分頁(yè)的方法進(jìn)行詳盡的闡述,如果您感興趣的話(huà),不妨一看。
SQL SERVER 2000中SQL SERVER TOP分頁(yè)的方法:
- CREATE PROCEDURE [Zhzuo_GetItemsPage]
- @PageIndex INT, /@PageIndex從計(jì)數(shù),0為第一頁(yè)/
- @PageSize INT, /頁(yè)面大小/
- @RecordCount INT OUT, /總記錄數(shù)/
- @PageCount INT OUT /頁(yè)數(shù)/AS/獲取記錄數(shù)/
- SELECT @RecordCount = COUNT() FROM Production.Product
- /計(jì)算頁(yè)面數(shù)據(jù)/
- SET @PageCount = CEILING(@RecordCount 1.0 / @PageSize)
- /TOP記錄數(shù)/
- 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/執(zhí)行/
- EXEC (@SQLSTR)
以上存儲(chǔ)過(guò)程對(duì)頁(yè)數(shù)進(jìn)行判斷,如果是第一頁(yè)或最后一頁(yè),進(jìn)行特殊處理。其他情況使用2次TOP翻轉(zhuǎn)。其中排序條件為ProductID倒序。最后通過(guò)EXECUTE執(zhí)行SQL字符串拼串。
【編輯推薦】