SQL:sql
CREATE PROCEDURE PagingViewTest ( @currentPageIndex INT, --頁序號 @pageSize INT, --頁大小 @pageCount INT OUTPUT --返回值,總記錄數 ) AS BEGIN
--取總記錄數 SELECT @pageCount=COUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提升執行效率 WITH Result AS ( SELECT ROW_NUMBER() OVER(ORDER BY OrderID) AS rowNumber,* FROM sale_order s ) SELECT * FROM Result r WHERE ((@currentPageIndex-1)*@pageSize < rowNumber) AND (rowNumber <=@currentPageIndex*@pageSize) END
執行結果:函數
一直想本身實現分頁的存儲過程,一直沒實現,今天沒偷懶,言歸正傳,簡略講下分頁的原理:分頁有幾個參數,當前頁序號(即第幾頁,必須),頁大小(每頁顯示數量,必須),總頁數(可選),總記錄數(可選),前臺查詢數據時須要向後臺至少發送兩個必選參數。參數有了,SQL Server也就不愁分頁啦!利用Row_Number的主要緣由是要對錶進行編號,以肯定表中記錄是第X頁中第X條數據,執行完Row_Number函數的表以下:blog
看到rowNumber列相信你們都有思路了,只要加上where條件 前一頁面*每頁大小< rowNumber and。rowNumber <= 當前頁面*每頁大小 便可,原理就是這些,能夠基於這個思路繼續拓展,好比傳入表名實現通用表或者視圖的分頁等等。class
今天關於SQL分頁就介紹到這裏,歡迎你們批評指正。效率