create proc GetAuthors
@Author_Last_Name as varchar(100) = null,
@StartRow as int = null,
@StopRow as int = null
AS
---- 建立有標識符列的table變量
declare @t_table table
(
[rownum] [int] IDENTITY (1, 1) Primary key NOT NULL ,
[Author_Last_Name] [varchar] (40) ,
[Author_First_Name] [varchar] (20) ,
[phone] [char] (12) ,
[address] [varchar] (40) ,
[city] [varchar] (20) ,
[state] [char] (2) ,
[zip] [char] (5)
)
---- 在返回指定的@StopRow行數之后停止處理查詢
Set RowCount @StopRow
---- 插入到table變量中
insert @t_table
(
[Author_Last_Name],[Author_First_Name],[phone],[address],[city],[state],[zip]
)
SELECT [Author_Last_Name],[Author_First_Name],[phone],[address],[city],[state],[zip]
FROM authors
WHERE Author_Last_Name like '%' + @Author_Last_Name + '%'
ORDER BY Author_Last_Name
---- 返回到正確的結果
SELECT * FROM @t_table WHERE rownum >= @StartRow
ORDER BY rownum
GO
????參數@StartRow和@StopRow接收整數值,代表要返回的開始記錄和結束記錄,如果要在一個25條記錄的頁面中返回第4頁,我們就可以設置@StartRow為76,@StopRow為100。我們在table變量@t_table中定義了一個叫rownum的整數類型的列,并指定為標識符列,這個列在我們這里介紹的分頁技術中是很重要的,當我們插入數據時,這個列自動增加,它將在插入數據時起排序作用。SET ROWCOUNT語句對優化性能很關鍵,它告訴SQL Server進行限制要插入的數據,如果我們要76-100條記錄之間的數據,那么就可以不必插入大于100條記錄的數據。最后的SQL語句從@t_table的table變量選擇rownum大于或者等于@StartRow的那些數據集,然后把它們返回到Web服務器,由Web服務器綁定到DataGrid對象。