create procedure dbo.create******
2(3 @pageindex int,
4 @pagesize int
5)6as
7begin
8 --定義三個變數:
9 -- @pagelowerbound :所取出記錄的下限.
10 -- @pageupperbound: 所要取出記錄的上限.
11 -- @totalrecords: 返回記錄總數,主要用於頁面的計算.
12 declare @pagelowerbound int
13 declare @pageupperbound int
14 declare @totalrecords int
1516 --計算上下限的值.
17 set @pagelowerbound=@pageindex * @pagesize
18 set @pageupperbound=@pagelowerbound+@pagesize-1
1920--建立臨時表:
21--indexid是標識,自動增長1;
22--******id由資料表[******]填充;
23 create table #pageindexfor******
24 (
25 indexid int identity(1,1) not null,
26 ******id int
27 )
28--填充臨時表
29 insert into #pageindexfor******(******id)
30 select s.[******id]
31 from [******] s
32 --這裡可以加where condition和oder by語句
33 34 --取得記錄總數,其實影響行數就是記錄總數
35 select @totalrecords=@@rowcount
3637 --獲取我們所要的記錄.
38 select s.*
39 from [******] s,#pageindexfor****** p
40 where s.[******id]=p.[******id]
41 and p.[indexid]>=@pagelowerbound
42 and p.[indexid]<=@pageupperbound
43 order by s.[******]
44 45 --返回記錄總數.
46 reture @totalrecords
47end
由上面的注釋就能看懂了,呵呵,既然寫到這裡也把程式的**寫出來:
1public listget******(int pageindex,int pageindex,out int totalrecords);
8 param[0].value=pageindex;
9 param[1].value=pagesize;
10 param[2].direction = parameterdirection.returnvalue;
11 sqldatareader reader=sqlhelper.executereader(commandtype.storedprocedure, "get******", param);
12 while(reader.read())
15 reader.close();
16 trycatch{}
19 return entity;
20}上面的一些函式是自己寫的:
sqlhelper類:簡化資料庫查詢類.
get******entity(sqldatareader reader):由於經常在專案中會用到好基礎實體類的獲取,所以單獨寫乙個私有函式,以便重用;
值得注意的是獲取總的記錄數時可能型別為dbnull而導致錯誤.
分頁儲存過程 分頁儲存過程
分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...
分頁儲存過程
create proc p sobigo percentpage tblname varchar 255 t category 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pag...
分頁儲存過程
create procedure pro select pageindex int,pagesize int as select student.sno,student.sname,student.s grade.math,grade.physics,grade.huaxue,grade.chine...