也談儲存過程分頁

2022-01-15 20:53:15 字數 1464 閱讀 2593

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

建立乙個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)

endgo

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

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

也談儲存過程分頁

最近我測試小春寫的儲存分頁,發現有些許問題 建立乙個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...