• λ我爱Aspx >> C#.Net >> 用SQL 2005的ROW_NUMBER() 实现分页功能_数据库技巧
  • 用SQL 2005的ROW_NUMBER() 实现分页功能_数据库技巧

  • :aspxer  Դ:internet  :2007-4-28 23:45:25  ؼ:sql,数据库,数据
  • 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

    end

    else

    begin

    set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder

    Ҷƪл˵?
  • һƪ使用PagedDataSource类实现DataList和Repeater控件的分页显示_ASP.NET技巧
    һƪ支持多风格变换的ASP分页类_ASP技巧