首先
在數據庫中建立一個存儲過程
該存儲過程接受兩個輸入參數
分別是要返回數據的第一條記錄數和最後一條記錄數
要創建一個返回指定條記錄結果的存儲過程
首先必須指定返回結果集的條記錄數
這裡用table變量(SQL Server
)
table變量盡管是存儲在內存中的
但在存儲過程結束後自動釋放
創建的存儲過程如下
create proc InsertStudents
@Student_Last_Name as varchar(
) = null
@StartRow as int = null
@StopRow as int = null
AS
建立有標識符列的table變量
declare @t_table table
(
[rownum] [int] IDENTITY (
) Primary key NOT NULL
[Student_Last_Name] [varchar] (
)
[Student_First_Name] [varchar] (
)
)
在返回指定的@StopRow行數之後停止處理查詢
Set RowCount @StopRow
插入到table變量中
insert @t_table
(
[Student_Last_Name]
[Student_First_Name]
)
SELECT [Student_Last_Name]
[Student_First_Name]
FROM Students
WHERE Student_Last_Name like
%
+ @Student_Last_Name like
%
ORDER BY Student_Last_Name
返回到正確的結果
SELECT * FROM @t_table WHERE rownum >= @StartRow
ORDER BY rownum
GO
參數@StartRow和@StopRow接收整數值
代表要返回的開始記錄和結束記錄
如果要在一個
條記錄的頁面中返回第
頁
我們就可以設置@StartRow為
@StopRow為
table變量@t_table中定義了一個叫rownum的整數類型的列
並指定為標識符列
它將在插入數據的時候自動增加
起到排序作用
Set RowCount語句是優化性能的關鍵
它會告訴SQL Server進行限制要插入的數據
如果我們要
條記錄之間的數據
那麼就可以不必插入大於
條記錄的數據
最後的SQL語句通過@t_table的table變量選擇rownum大於或者等於@StartRow的那些數據集
然後把它們返回到Web服務器
由Web服務器綁定到DataGrid對象
但如果浏覽者請求的頁數越來越大
需要向table變量填充的記錄就越多
導致頁面性能有所下降
因此
性能將依賴於你計算機的硬件和你要返回的記錄數
但為了減輕數據庫和網絡傳輸的壓力
設計合理的查詢結果頁數是很見效的
[] [] [] []
From:http://tw.wingwit.com/Article/program/net/201311/14928.html