也談儲存過程分頁

2021-09-08 15:15:00 字數 1453 閱讀 5238

最近我測試小春寫的儲存分頁,發現有些許問題:

建立乙個test(id,name,fid)

向test添充幾十條資料,使id=1,2,3,4.........(即遞增的integer),其他任意

在t-sql debugger給改儲存過程分別傳遞如下引數:

@querystr= * from test

@keyfield=[id]     

@pagesize=3            

@pagenumber=1

問題出來了,看輸出結果(注意id):

id        name          fid

4         kwklover       2

5         kwklover       2

6         kwklover       2

根據傳入引數,我們的預期應該是:

id        name          fid

1         kwklover       2

2         kwklover       2

3         kwklover       2

下面是我參照小春的儲存分頁寫的分頁儲存過程,可以解決上面的問題:

create procedure prgetrecordbypage

( @pagesize int,   --每頁的記錄條數 

@pagenumber int, --當前頁面

@querysql varchar(1000),--部分查詢字串,如* from test order by id desc

@keyfield varchar(500) 

) as

begin

declare @sqltable as varchar(1000)

declare @sqltext as varchar(1000)

set @sqltable='select top '+cast(@pagenumber*@pagesize as varchar(30))+' '+@querysql

set @sqltext='select top '+cast(@pagesize as varchar(30))+' * from '

+'('+@sqltable+') as tembtba '

+'where '+@keyfield+' not in (select top '+cast((@pagenumber-1)*@pagesize as varchar(30))+' '+@keyfield+' from '

+'('+@sqltable+') as temptbb)'

exec(@sqltext)

end

go 至於效率如何,呵呵,我也不知道,

因為我還不知道怎麼測試儲存過程的執行效率,希望各位朋友不吝賜教!先行謝過了

也談儲存過程分頁

最近我測試小春寫的儲存分頁,發現有些許問題 建立乙個test id,name,fid 向test添充幾十條資料,使id 1,2,3,4.即遞增的integer 其他任意 在t sql debugger給改儲存過程分別傳遞如下引數 querystr from test keyfield id page...

分頁儲存過程 分頁儲存過程

分頁儲存過程 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...