当前位置: 首页 > news >正文

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)...

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下:

/******************/
--Author:梦在旅途(www.Zuowenjun.cn)
--CreateDate:2015-06-02
--Function:分页获取数据
/******************/
create procedure [dbo].[sp_DataPaging]
(
@selectsql	nvarchar(200),--查询字段SQL,不含select,支持灵活写法,如:col1,col3,isnull(col4,'') as col4
@fromsql	nvarchar(500),--查询表及条件SQL,不含from,若包含条件请加上where,如:table where col1='test'
@orderbysql nvarchar(100),--查询排序SQL,不含order by,如:id order by desc
@pagesize	int=20,--每页显示记录数
@pageno		int=1,--当前查询页码,从1开始
@returnrecordcount bit=1 --是否需要返回总记录数,若设为1,则返回两个结果表
)
as
begin

	declare @sqlcount nvarchar(500),@sqlstring nvarchar(max)
	
	set @sqlstring=N'from (select row_number() over (order by ' + @orderbysql + N') as rowId,' + @selectsql + N' from '
				+ @fromsql +N') as t'
	if(@returnrecordcount=1)
	begin
		set @sqlcount=N'select count(rowId) as resultcount ' + @sqlstring
		exec(@sqlcount)
	end

	set @sqlstring=N'select * ' + @sqlstring + ' where rowId between ' + convert(nvarchar(50),(@pageno-1)*@pagesize+1)+' and '+convert(nvarchar(50),@pageno*@pagesize)
	
	exec(@sqlstring)
	
end

 用法如下:

--单表查询
exec [dbo].[sp_DataPaging] '*','AssetDetail','assetsingleno',10,1

--多表查询
exec [dbo].[sp_DataPaging] 'a.*','Inventory a left join AssetDetail b 
on a.StoreNo=b.StoreNo and a.CompanyID=b.CompanyID
inner join Asset c on b.AssetID=c.ID and b.CompanyID=c.CompanyID','a.id',20,3,1

结果显示如下(如上多表查询):

相关文章:

  • Ubuntu 下 Mysql 新建数据库和用户
  • 运维角度浅谈MySQL数据库优化
  • springmvc常用的组件,注解,跳转
  • Codeforces Round #306 (Div. 2) E. Brackets in Implications 构造
  • ZH奶酪:【数据结构与算法】并查集基础
  • lnmp 在nginx中配置相应的错误页面error_page
  • Android 官方命令深入分析之Android Debug Bridge(adb)
  • 使用cardme读写VCard文件,实现批量导入导出电话簿
  • 使用SQL Server 2008远程链接时SQL数据库不成功的解决方法
  • 做基准测试时tpcc相关注意点
  • 分享一个 ftp下载、解压、更新依赖库文件的 python 脚本
  • wifi的web 认证。
  • Servlet开篇
  • Linode Centos6.5从零开始装环境...流水账
  • 在Linux系统中如何识别U盘
  • [笔记] php常见简单功能及函数
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • CSS相对定位
  • Javascript编码规范
  • JavaScript设计模式之工厂模式
  • JS数组方法汇总
  • js中forEach回调同异步问题
  • Node 版本管理
  • October CMS - 快速入门 9 Images And Galleries
  • Python socket服务器端、客户端传送信息
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 从零搭建Koa2 Server
  • 计算机常识 - 收藏集 - 掘金
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​ssh免密码登录设置及问题总结
  • ###C语言程序设计-----C语言学习(3)#
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.ajax()方法详解
  • $refs 、$nextTic、动态组件、name的使用
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十)T检验-第一部分
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)JAVA中的堆栈
  • (转)大型网站架构演变和知识体系
  • (转)关于pipe()的详细解析
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)OpenStack Hacker养成指南
  • .chm格式文件如何阅读
  • .gitattributes 文件
  • .htaccess配置重写url引擎