SQL分頁演算法

2021-04-18 11:24:39 字數 716 閱讀 5694

create procedure pagination

@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 totalpages,@rowcount as totalrows,@currentpage as curpage

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

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

exec sp_cursorclose @p1

set nocount off

--用法例項

exec pagination 'select * from table1',1,10

--返回三個結果集,第乙個是空的,第二個返回的列分別是總頁數,總行數,當前頁,第三個是查詢的資料結果集。

SQL分頁演算法

sql分頁演算法的寫法參考了 金魚 的部落格 我在sqlserver2005資料庫表中插入128w條資料進行測試 表結構create table dbo tbuser id int identity 1,1 not null,name varchar 50 null,varchar 50 null,...

SQL儲存過程分頁演算法研究

1.俄羅斯儲存過程 的改良版 create procedure pagination1 pagesize int,頁面大小,如每頁儲存20條記錄 pageindex int 當前頁碼 as set nocount on begin declare indextable table id int id...

手寫分頁sql 分頁查詢SQL語句

表結構 drop table if exists zhoufoxcn userlist create table zhoufoxcn userlist userid int 10 unsigned not null auto increment,username varchar 45 not nul...