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