一个基于ROW_NUMBER()的通用分页存储过程代码

时间:2024-01-18 13:55:09 

建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。
注意:数据量大、性能要求高的,请个性化处理。


ALTER PROCEDURE [dbo].[COMMON_PROCEDURE_SelectWithPage]
@Sql VARCHAR(5000),
@CurrentPageNo INT,
@PageSize INT,
@TotalNum INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SqlCmd VARCHAR(5000)
------------------------------------------ --查询数据
SET @SqlCmd = 'SELECT * FROM (' + @Sql + ') A WHERE RowIndex BETWEEN ' + CONVERT(VARCHAR,(@CurrentPageNo-1) * @PageSize + 1) + ' AND ' + CONVERT(VARCHAR,@CurrentPageNo * @PageSize)
EXEC(@SqlCmd) PRINT (@SqlCmd)
------------------------------------------ --求记录总数
IF @TotalNum = -1
BEGIN
CREATE TABLE #Temp1(num INT)
INSERT INTO #Temp1
EXEC('SELECT count(*) FROM (' + @Sql + ') A')
SELECT @TotalNum=(SELECT * FROM #Temp1)
DROP TABLE #Temp1
END

用法很简单,但必须在传入的SQL中使用ROW_NUMBER() OVER(...) AS RowIndex :
DECLARE @Sql VARCHAR(5000)
DECLARE @CurrentPageNo INT
DECLARE @PageSize INT
DECLARE @TotalNum INT

SET @CurrentPageNo = 100
SET @PageSize = 10
SET @TotalNum = -1
SET @Sql = ' SELECT *, ROW_NUMBER() OVER (ORDER BY 排序字段) AS RowIndex FROM 表名 A WITH (NOLOCK) '

EXEC [dbo].[COMMON_PROCEDURE_SelectWithPage] @Sql,@CurrentPageNo,@PageSize,@TotalNum OUTPUT

SELECT @TotalNum
标签:ROW,NUMBER,分页,存储过程
0
投稿

猜你喜欢

  • Python基础第三方模块requests openpyxl

    2023-09-24 04:31:32
  • SQL中Groupby和Having的使用方法

    2008-12-29 13:54:00
  • python 七种邮件内容发送方法实例

    2022-01-13 21:06:38
  • 详解python的异常捕获

    2023-05-27 11:24:03
  • python中几个常用函数的正确用法-lambda/filter/map/reduce

    2022-02-17 14:52:45
  • 微信JSSDK调用微信扫一扫功能的方法

    2024-04-29 13:46:02
  • JS实现十字坐标跟随鼠标效果

    2024-04-22 22:43:00
  • Go slice切片make生成append追加copy复制示例

    2024-02-13 11:48:29
  • 深入浅析PHP的session反序列化漏洞问题

    2024-05-13 09:51:14
  • Python 列表排序详解

    2022-08-14 05:05:21
  • vuecli3.0脚手架搭建及不同的打包环境配置vue.config.js的详细过程

    2024-04-30 08:42:13
  • bootstarp modal框居中显示的实现代码

    2024-04-22 13:04:02
  • 如何基于python生成list的所有的子集

    2021-09-24 07:31:31
  • 记录密码的asp代码

    2009-11-02 10:50:00
  • python 设置文件编码格式的实现方法

    2021-06-22 14:49:52
  • Python实现转换图片背景颜色代码

    2023-02-13 09:02:54
  • python binascii 进制转换实例

    2021-03-25 10:56:25
  • 利用JavaScript做数独的完整实现过程

    2024-02-24 02:10:47
  • 一文带你搞懂Golang依赖注入的设计与实现

    2023-07-23 14:33:53
  • GO必知必会的常见面试题汇总

    2023-07-14 01:47:07
  • asp之家 网络编程 m.aspxhome.com