• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 一个基于ROW_NUMBER()的通用分页存储过程代码

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了ROW_NUMBER,分页,存储过程等相关知识,希望本文的分享对您有所帮助

项目中有很多小型的表(数据量不大),都需要实现分页查询,因此实现了一个通用的分页。

建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。
注意:数据量大、性能要求高的,请个性化处理。
代码如下:
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
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解distinct 和 row_number()和over() 的区别
  • Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
  • ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函
  • Oracle row_number() over()解析函数高效实现分页_Oracle应用_脚
  • SqlServer2005中使用row_number()在一个查询中删除重复记录的方
  • sqlserver2005使用row_number() over分页的实现方法
  • sqlserver巧用row_number和partition by分组取top数据
  • SqlServer 2005中使用row_number()在一个查询中删除重复记录
  • SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法
  • sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW

相关文章

  • 2017-05-11MySQL中对于not in和minus使用的优化
  • 2018-12-05SQL Server中的XML数据进行insert、update、delete操作实现代码
  • 2018-12-05SqlServer 执行计划及Sql查询优化初探
  • 2018-12-05有关锁表问题的文章推荐4篇
  • 2018-12-05 8种Nosql数据库系统对比
  • 2017-05-11windows7下启动mysql服务出现服务名无效的原因及解决方法
  • 2018-12-05mysql管理用户、更改口令的命令行实例操作
  • 2017-05-11解析在MySQL里创建外键时ERROR 1005的解决办法
  • 2018-12-05MySQL简化输入小技巧
  • 2017-05-11InnoDB引擎数据库主从复制同步新的分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle AS关键字 提示错误
    • mysql面试题小结
    • mysql查询扩展技术教程
    • 根据表名和索引获取需要的列名的存储过程
    • SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
    • MySQL数据库的23个注意事项
    • SQLSERVER 中datetime 和 smalldatetime类型分析说明
    • MySQL常用基本SQL语句总结_MySQL
    • 基于一致性hash算法(consistent hashing)的使用详解
    • 如何保护MySQL中重要数据的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有