SQL 分頁用預存程序

SQL 分頁用預存程序

		@SqlCommand NVARCHAR(2000),
		@CurrentPageIndex INT,
		@PageSize INT
AS

SET nocount ON
DECLARE @curl INT,
		@rowcount INT

EXEC sp_cursoropen @curl output, @SqlCommand, @scrollopt=1, @ccopt=1, @rowcount=@rowcount output
SELECT ceiling(1.0 * @rowcount/@PageSize) as 總頁數, @rowcount as 總筆數, @CurrentPageIndex as 目前頁
SET @CurrentPageIndex = (@CurrentPageIndex - 1) * @PageSize + 1
EXEC sp_cursorfetch @curl, 16, @CurrentPageIndex, @PageSize
EXEC sp_cursorclose @curl
SET nocount OFF

此分頁預存程序是用sql指標來跑 不是用一般的PK鍵來達到夾擠搜尋。

因為不用配合PK鍵以及排序欄位,所對我來說很實用每一個Table及View都可使用。

 

使用方式(使用北風資料庫的'Order'資料表):

查詢結果如下
SQL_Result

 

GridView.DataBind();

用SqlDataAdapter來執行該預存程序會出來3個DataTable,第3個DataTable才是分頁結果。

 

不過有一個缺點就是預存程序的第1個參數"Sql 查詢命令"無法使用參數的方式來做查詢。
所以要過濾特殊字元小心Sql Inject~~