SQL Server通用分页存储过程:利用SQL Server未公开的存储过程实现

存储过程定义:

CREATE   procedure   [ dbo ] . [ SplitPage ]
(
    
@SelectCommandText   nvarchar ( 4000 ),  --  要执行的查询命令
     @CurrentPageIndex   int   =   0 ,   --  当前页的索引,从 0 开始
     @PageSize   int   =   20 ,   --  每页的记录数
     @RowCount   int   =   0  out,  --  总的记录数
     @PageCount   int   =   0  out  --  总的页数
)
AS

IF   @PageSize   <=   0
BEGIN
    
RAISERROR ( ' 参数 PageSize 必须大于零。 ' 16 1 );
    
RETURN
END

DECLARE   @p1   int
DECLARE   @RowIndex   int

SET   @CurrentPageIndex   =   @CurrentPageIndex   +   1

EXEC     sp_cursoropen
        
@p1  output,
        
@SelectCommandText ,
        
@scrollopt   =   1 ,
        
@ccopt   =   1 ,
        
@RowCount   =   @RowCount  output;

SET   @PageCount   =   ceiling ( 1.0   *   @RowCount   /   @PageSize );

SET   @RowIndex   =  ( @CurrentPageIndex   -   1 *   @PageSize   +   1

EXEC     sp_cursorfetch
        
@p1 ,
        
16 ,
        
@RowIndex ,
        
@PageSize ;

EXEC     sp_cursorclose
        
@p1

 

 调用方法:

DECLARE      @return_value   int ,
        
@RowCount   int ,
        
@PageCount   int

EXEC      @return_value   =   [ dbo ] . [ SplitPage ]
        
@SelectCommandText   =  N ' SELECT * FROM Log ' ,
        
@CurrentPageIndex   =   0 ,
        
@PageSize   =   4 ,
        
@RowCount   =   @RowCount  OUTPUT,
        
@PageCount   =   @PageCount  OUTPUT

SELECT      @RowCount   as  N ' @RowCount ' ,
        
@PageCount   as  N ' @PageCount '

SELECT      ' Return Value '   =   @return_value

GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值