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'資料表):
GridView.DataBind();
用SqlDataAdapter來執行該預存程序會出來3個DataTable,第3個DataTable才是分頁結果。
不過有一個缺點就是預存程序的第1個參數"Sql 查詢命令"無法使用參數的方式來做查詢。
所以要過濾特殊字元小心Sql Inject~~