一个基于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,分页,存储过程
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python基础第三方模块requests openpyxl
2023-09-24 04:31:32
![](https://img.aspxhome.com/file/2023/5/131165_0s.png)
SQL中Groupby和Having的使用方法
2008-12-29 13:54:00
python 七种邮件内容发送方法实例
2022-01-13 21:06:38
详解python的异常捕获
2023-05-27 11:24:03
![](https://img.aspxhome.com/file/2023/7/71517_0s.png)
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
![](https://img.aspxhome.com/file/2023/9/135569_0s.jpg)
Go slice切片make生成append追加copy复制示例
2024-02-13 11:48:29
![](https://img.aspxhome.com/file/2023/6/109676_0s.jpg)
深入浅析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
![](https://img.aspxhome.com/file/2023/8/132998_0s.png)
bootstarp modal框居中显示的实现代码
2024-04-22 13:04:02
![](https://img.aspxhome.com/file/2023/5/135895_0s.png)
如何基于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
![](https://img.aspxhome.com/file/2023/2/56332_0s.gif)
一文带你搞懂Golang依赖注入的设计与实现
2023-07-23 14:33:53
![](https://img.aspxhome.com/file/2023/1/90481_0s.png)
GO必知必会的常见面试题汇总
2023-07-14 01:47:07
![](https://img.aspxhome.com/file/2023/5/90485_0s.jpg)