SqlServer分页存储过程示例

USE [Micro_Soft] 

go 
--存在就删除旧存储过程
IF EXISTS (SELECT * 
           FROM   sys.objects 
           WHERE  object_id = Object_id(N'[dbo].[prPager]') 
                  AND type IN ( N'P', N'PC' )) 
  DROP PROCEDURE [dbo].[prPager] 
go 

USE [Micro_Soft] 

go 

SET ansi_nulls ON 

go 

SET quoted_identifier ON 

go 

CREATE PROCEDURE [dbo].[Prpager] @varIdentityName VARCHAR(200),--主键名称 
                                 @intPageSize     INT,----每页记录数 
                                 @intCurrentCount INT, 
                                 ----当前记录数量(页码*每页记录数) 
                                 @varTableName    VARCHAR(200),----表名称 
                                 @varWhere        VARCHAR(800),----查询条件 
                                 @intTotalCount   INT output ----记录总数 
AS 
    DECLARE @sqlSelect NVARCHAR(2000) 
    ----局部变量(sql语句),查询记录集 
    DECLARE @sqlGetCount NVARCHAR(2000) 
    ----局部变量(sql语句),取出记录集总数 
    
    SET @sqlSelect = 'SELECT * FROM  ' 
                     + '    (SELECT ROW_NUMBER()  OVER( ORDER BY ' 
                     + @varIdentityName + ') AS RowNumber,* ' 
                     + '        FROM ' + @varTableName 
                     + '        WHERE ' + @varWhere 
                     + '     ) as  T2 ' + ' WHERE T2.RowNumber<= ' 
                     + Str(@intCurrentCount + @intPageSize) 
                     + ' AND T2.RowNumber>' 
                     + Str(@intCurrentCount) 
    SET @sqlGetCount = 'SELECT @intTotalCount = COUNT(*) FROM ' 
                       + @varTableName + ' WHERE ' + @varWhere 

    EXEC (@sqlSelect) 

    EXEC Sp_executesql @sqlGetCount, N'@intTotalCount INT OUTPUT', @intTotalCount output
go 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值