create proc GetAuthors
@Author_Last_Name as varchar(100) = null,
@StartRow as int = null,
@StopRow as int = null
AS
---- 建立有標(biāo)識(shí)符列的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行數(shù)之后停止處理查詢
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
---- 返回到正確的結(jié)果
SELECT * FROM @t_table WHERE rownum >= @StartRow
ORDER BY rownum
GO
????參數(shù)@StartRow和@StopRow接收整數(shù)值,代表要返回的開始記錄和結(jié)束記錄,如果要在一個(gè)25條記錄的頁面中返回第4頁,我們就可以設(shè)置@StartRow為76,@StopRow為100。我們在table變量@t_table中定義了一個(gè)叫rownum的整數(shù)類型的列,并指定為標(biāo)識(shí)符列,這個(gè)列在我們這里介紹的分頁技術(shù)中是很重要的,當(dāng)我們插入數(shù)據(jù)時(shí),這個(gè)列自動(dòng)增加,它將在插入數(shù)據(jù)時(shí)起排序作用。SET ROWCOUNT語句對優(yōu)化性能很關(guān)鍵,它告訴SQL Server進(jìn)行限制要插入的數(shù)據(jù),如果我們要76-100條記錄之間的數(shù)據(jù),那么就可以不必插入大于100條記錄的數(shù)據(jù)。最后的SQL語句從@t_table的table變量選擇rownum大于或者等于@StartRow的那些數(shù)據(jù)集,然后把它們返回到Web服務(wù)器,由Web服務(wù)器綁定到DataGrid對象。