存储过程分页 只用一次orderby 不适合sql2000

今天在研究分页,遇到了各种问题,之前想到用TOP的方法查询,但是又致命的缺点,如果表的主键不是自增的,或者不适int,就不能使用'<'或者'>',这样的话,光用top方法,到最后一页,如果最后一页的内容小于你的pagesize,那么就没有办法正常显示。今天请教了一个前辈,用了一个方法,一剑穿心啊。分享给大家。

以下的存储过程不是通用的,希望同志们能融会贯通。废话不多:

create proc [Kiros].[Static_User_Page]
@curpageindex nvarchar(20),
@pagesize nvarchar(20),
@pagecount nvarchar(20) output
as
select * from(select *,row_number() over(order by userid) as row_no from Kiros.static_user) as T
where T.row_no between cast(@curpageindex as int)*@pagesize+1 and (@curpageindex+1)*@pagesize
select @pagecount=count(UserID)/@pagesize from Kiros.static_user

呵呵 ,其实也不是这么神秘, 关键在于  2005新出来的方法  row_number() over(order by userid) as row_no,亮点啊。

这么做的话,和oracle有的一拼了。

这个是数据库的东西。下次我把它和Gridview写的例子一起贴出来。

PS:不是直播。

原文地址:https://www.cnblogs.com/Kiros/p/1887972.html