|
用SQL 2005的ROW_NUMBER() 实现分页功能(1) DECLARE @pagenum AS INT, @pagesize AS INT SET @pagenum = 2 SET @pagesize = 3 SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY newsid DESC) AS rownum, newsid, topic, ntime, hits FROM news) AS D WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize ORDER BY newsid DESC
ASPx里面只需给SQL传入pageid和条数即可。
CSDN上还有个存储过程实现分页的代码:
ALTER PROCEDURE news_Showlist ( @tblName varchar(255), -- 表名 @strGetFields varchar(1000), -- 需要返回的列 @fldName varchar(255), -- 排序的字段名 @PageSize int , -- 页尺寸 @PageIndex int , -- 页码 @strWhere varchar(1500), -- 查询条件(注意: 不要加where) @Sort varchar(255) --排序的方法
) AS declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型
if @Sort = 'desc' begin set @strTmp = '<(select min' set @strOrder = ' order by ' + @fldName +' desc' --如果@OrderType不是,就执行降序,这句很重要! end else begin set @strTmp = '>(select max' set @strOrder = ' order by ' + @fldName +' asc' end if @PageIndex = 1 begin if @strWhere != '' begin set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
|