日期:2014-05-19  浏览次数:20611 次

通过存储过程如何返回所需当前页数据
ALTER   PROCEDURE   dbo.Paging

@sqlstr   nvarchar(4000),   --查询字符串  
@pagecount   int,   --第N页  
@pagesize   int   --每页行数  
AS
BEGIN
    set   nocount   on  
    declare   @P1   int,  
    @rowcount   int  
    exec   sp_cursoropen   @P1   output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount   output  
    select   @rowcount   as   总行数,ceiling(1.0*@rowcount/@pagesize)   as   页数,@pagecount   as   当前页  
    set   @pagecount=(@pagecount-1)*@pagesize+1  
    exec   sp_cursorfetch   @P1,16,@pagecount,@pagesize  
    exec   sp_cursorclose   @P1  
end


@sqlstr   =select   *   from   table   order   by   name
@pagecount   =3
@pagesize   =20

返回结果:
总行数                   页数                               当前页                  
-----------   ----------------   -----------  
45508               2276                           3  
我想返回当前第3页的数据,如何操作啊

------解决方案--------------------
select top 20 *
from (select top 60 * from table order by name) t
order by name desc