分頁 儲存過程

2021-04-12 18:03:27 字數 1180 閱讀 6380

方法一(任何條件的sql語句'):

create  procedure xiaozhengge

@sqlstr nvarchar(4000), --查詢字串

@currentpage int,--第n頁

@pagesize int--每頁行數

asset nocount on

declare @p1 int,--p1是游標的id

@rowcount int

exec sp_cursoropen @p1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁

set @currentpage=(@currentpage-1)*@pagesize+1

exec sp_cursorfetch @p1,16,@currentpage,@pagesize

exec sp_cursorclose @p1

set nocount off

測試: xiaozhengge '任何條件的sql語句',2,10

方法二(前面的頁面記取快,越往後讀越慢):

lihonggen0(李洪根,ms mvp)

假若你用幾十萬行資料,你可以看看.

你的儲存過程還比不上not in分頁,示例:

select top 10 * from customers where customerid not in (select top 20 customerid from customers )

declare @sqlstr varchar(8000)

set @sqlstr='select top '+cast(@每頁大小 as varchar)+' * from 表 where 主鍵列 not in (select top '+cast(@每頁大小*@第幾頁 as varchar)+' 主鍵列 from 表 )'

exec(@sqlstr)

我個人認為最好的分頁方法是:

select top 10 * from table where id>200

寫成儲存過程,上面的語句要拼一下sql語句,要獲得最後大於的哪乙個id號  

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

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