一个高效的数据分页的存储过程

  • 来源: 编程中国 作者: 若水   2008-05-07/16:21
  • CREATE PROCEDURE pageTest  --用于翻页的测试
    --需要把排序字段放在第一列

     (
      @FirstID nvarchar(20)=null,  --当前页面里的第一条记录的排序字段的值
      @LastID nvarchar(20)=null,  --当前页面里的最后一条记录的排序字段的值
      @isNext bit=null,    --true 1 :下一页;false 0:上一页
      @allCount int output,   --返回总记录数
      @pageSize int output,   --返回一页的记录数
      @CurPage int     --页号(第几页)0:第一页;-1最后一页。
      )

    AS

    if @CurPage=0
     begin
      --统计总记录数
      select @allCount=count(ProductId) from Product_test
      
      set @pageSize=10
      --返回第一页的数据
      select top 10
       ProductId,
       ProductName,
       Introduction  
       from Product_test order by ProductId
     end

    else if @CurPage=-1

     select * from
      (select top 10 ProductId,
       ProductName,
       Introduction

      from Product_test order by ProductId desc ) as aa 
      order by ProductId
    else

     begin
      if @isNext=1
       --翻到下一页
       select top 10 ProductId,
       ProductName,
       Introduction
      from Product_test where ProductId > @LastID order by ProductId
      
      
      else
       --翻到上一页
       select * from
        (select top 10 ProductId,
       ProductName,
       Introduction
      from Product_test where ProductId < @FirstID  order by ProductId desc) as bb order by ProductId
     end
     

    百万数据翻页就像100条数据一样!


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多