MS SQL 分页存储过程

最近换了家新公司,但是新公司没有使用分页的存储过程。那我就自个写一个往项目上套 (效率怎么样就不怎么清楚没有详细的测试过)

CREATE PROCEDURE [dbo].[pro_common_pageList](@tab NVARCHAR(MAX) ,---表名@PrimaryKey VARCHAR(100) , --主键ID@strFld NVARCHAR(MAX) , --字段字符串@strWhere NVARCHAR(MAX) = ' ' , --where条件 @IsDistinct BIT ,@PageIndex INT , --页码@PageSize INT , --每页容纳的记录数@Order VARCHAR(255) = ' ' , --排序字段及规则,不用加order by@Sort VARCHAR(20) = 'desc' ,@TotalCount INT OUTPUT  --总记录数
    )
ASBEGINSET NOCOUNT ON;DECLARE @strSql VARCHAR(MAX);IF @strFld IS NULLOR @strFld = ' 'BEGIN SET @strFld = '*';END;  IF @Order IS NULLOR @Order = ' 'BEGIN SET @Order = @PrimaryKey;END; 
--计算总记录数DECLARE @sqlRecordCount NVARCHAR(MAX); --得到总记录条数的语句DECLARE @recordCount INT; --保存总记录条数的变量DECLARE @distinct NVARCHAR(20)= ' ';IF @IsDistinct = 1BEGIN SET @distinct = ' DISTINCT ';END; SET @sqlRecordCount = N'SELECT @recordCount=COUNT(1) FROM (SELECT '+ @distinct + ' ' + @strFld + ' FROM ' + @tab + ' WHERE 1=1 '+ @strWhere + ' ) AS TEMPTABLE';EXEC sp_executesql @sqlRecordCount, N'@recordCount int output',@recordCount OUTPUT;SET @TotalCount = @recordCount;--数据查询
--当@PageIndex=1,使用TOP效率较快IF @PageIndex = 1BEGIN SET @strSql = 'SELECT ' + @distinct + ' TOP ' + STR(@PageSize)+ ' ' + @strFld + ',0 AS rownum FROM ' + @tab+ ' WHERE 1=1 ' + @strWhere + ' ORDER BY ' + @Order + ' '+ @Sort;END; ELSEBEGIN  SET @strSql = 'SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY ' + @PrimaryKey+ ') AS rownum FROM ';
--是否去重:1去重IF @IsDistinct = 1BEGIN SET @strSql = @strSql + ' (SELECT DISTINCT ' + @strFld+ ' FROM ' + @tab + ' WHERE 1=1 ' + @strWhere+ ' ) AS S ';END;ELSEBEGIN SET @strSql = @strSql + ' ' + @tab + ' WHERE 1=1 '+ @strWhere;END; SET @strSql = @strSql+ ') AS Dwhere WHERE Dwhere.rownum BETWEEN '+ CAST(( ( @PageIndex - 1 ) * @PageSize ) + 1 AS NVARCHAR(20));SET @strSql = @strSql + ' AND '+ CAST(( @PageIndex * @PageSize ) AS NVARCHAR(20));SET @strSql = @strSql + ' ORDER BY ' + @Order + ' ' + @Sort;END; PRINT(@strSql)EXEC (@strSql);SET NOCOUNT OFF;END;
View Code

 

转载于:https://www.cnblogs.com/witeem/p/9067132.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

参考资料:1、ST HAL库官网资料 2、https://blog.csdn.net/u014470361/article/details/79206352#comments 一、STM32CubeMX配置外部时钟 注意在进行外部时钟配置时,即“High Speed Clock”和“Low Speed Clock”需配置成“Crytal/Ceramic Resonator&…

pyqt5 qlabel无法显示图片_实战PyQt5: 011-单选框控件QRadioButton

单选框QRadioButton简介QRadioButton为单选按钮, 可以选中(打开)或者取消选中(关闭)。在一组单选按钮中,一次只能选中其中的一个按钮。选中或者取消选中QRadioButton, 都会发出toggled()信号。使用isChecked()可以查看是否选择了某个QRadioBu…

matlab数据游标不能使用,启用数据游标模式

文本解释器,指定为下列值之一:tex - 使用 TeX 标记子集解释字符。latex - 使用 LaTeX 标记解释字符。none - 显示字面字符。TeX 标记默认情况下,MATLAB 支持一部分 TeX 标记。使用 TeX 标记可添加下标和上标,修改字体类型和颜色&a…

MySQL 快速定位性能问题

一、性能查看几款小工具:Top 查看:观察 load average :1分钟,5分钟,15分钟的平均负载值1. us% 用户使用的 CPU 占比,如果 us% 太高, 极有可能索引使用不当。2. sy% 系统内核使用的CPU占比&#…

mybatis-plus分页查询_SpringBoot + MyBatisPlus 快速入门

Hello,大家好!前面与大家分享了一次如何搭建Java项目脚手架,并且送给大家一个基础项目模板。那今天与大家分享如何使用这个基础项目,也就是快速上手 SpringBoots ➕ MyBatisPlus。 项目 / 目录结构 天津商业大学学院信息 这是一张天津商业大学…

php 获取每年的节假日,shell获取每年农历节日的日期

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3711.html我打算自己写一个每年节日就自动在网站上展示灯笼的源码功能,但是这里最重要的是要获得每年春节、端午节、中秋节等节日的日期,因为要自己写这判断这些日期的…

python爬虫requests实战_Python爬虫之requests库网络爬取简单实战

实例1:直接爬取网页 实例2 : 构造headers,突破访问限制,模拟浏览器爬取网页 实例3 : 分析请求参数,构造请求参数爬取所需网页 实例4: 爬取图片 实例5: 分析请求参数,构造…

某制冷设备制造厂商

某制冷设备制造厂商 该公司是一家以钣金加工,制冷设备制造、销售为主的公司,其产品广泛应用于高级宾馆、饭店及大型餐饮设施等。销售网点遍及日本、北美、欧洲及东南亚,产品深受世界各地用户的欢迎。 该公司原先使用的是TPICS生产管理系统&am…

python数字转换_Python实现中文数字转换为阿拉伯数字的方法示例

本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下: 一、需求 今天写了三千二百行代码。 今天写了3200行代码。 两行意思相同,只是表达方式不太能够,统一掉。 二、原理 数字的特征是 数字 …

LeetCode第14题:最长公共前缀

题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar"…

臭名昭著的sun.misc.Unsafe解释

Java虚拟机的最大竞争对手可能是托管C#等语言的Microsoft CLR 。 CLR允许编写不安全的代码作为低级编程的入口,这在JVM上很难实现。 如果您需要Java中的此类高级功能,则可能会被迫使用JNI ,这需要您了解一些C并Swift导致代码紧密耦…

主从复制

五 主从复制 Replication(重要!!!!!!) 5.1、介绍 基于主库二进制日志实时恢复到备库。 5.2、原理 5.2.1 主从复制的前提 (1)两台或两台以上数据库实例 (2)主库…

python输出格式控制_Python3.x那些事儿:[50]多种多样的输出格式

目前有两种方式来格式化输出格式,第一种就是自己动手来进行字符串的操作,虽然麻烦,但是都能实现。第二种方式就是使用str.format()函数。 string模块包含了一个Template类,这个类提供了把值替换成字符串的方法。 python提供把任意…

暑假第十五测

题解: 第一题: 20%枚举长度和每个子串,O(len)判断,随机情况复杂度可过 40%同样枚举长度,然后两个指针卡出区间,O(1)[或O(26)//可能可过?]判断 50%既然知道了40%的做法那…

zabbix磁盘的自动发现与磁盘指标监控

由于最近项目上需要对服务器监控进行规范化监控,再磁盘这块有几种方式 1.如果每台设备的磁盘是一样的 比如都有vda,vdb两块磁盘那么可以采用 1.1 每台客户端写脚本,服务端每台设备去加上监控项(------最次的手段-------------) 1.…

php前台用户权限开通,vue实现网站前台的权限管理

本文主要介绍了基于vue实现网站前台的权限管理(前后端分离实践),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。Javascript做为当下的热门语言,用途很广泛&#xff0c…

应用ForkJoin –从最佳到快速

到目前为止,JDK 7已很好地掌握在开发人员手中,并且大多数人都听说过ForkJoin,但是没有多少人有时间或机会去尝试它。 它引起了,并且可能仍然引起一些混乱,与普通线程池有什么不同。 [1] 我在本文中的目标是通过一个代…

Echarts-K线图提示框改头换面

工作: 使用Hbuilder建web工程,加入echarts相关库,根据需要更改K线图及其的提示样式,去除默认提示,使用异步加载echarts的数据,数据格式为json。 需要注意的K线图和5日均线,10日均线的意义&#…

vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)

不想解释太多直接上代码吧!!!在对matlab配置后,上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了,记得加上-C在对VC6.0进行配置的时候只要把 matlabroot\extern\include和matlabroot\extern\lib\win32\micr…

canvas换图时候会闪烁_Canvas实现图片上标注、缩放、移动和保存历史状态,纯干货(附CSS 3变化公式)...

(给前端大学加星标,提升前端技能.)作者:zhcxk1998https://juejin.im/user/5d4304bdf265da03d15531dc哈哈哈俺又来啦,这次带来的是canvas实现一些画布功能的文章,希望大家喜欢!这个css3变化公式可以适用于平常我们使用的…