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,一经查实,立即删除!

相关文章

了解Spring Web初始化

几年前,我们大多数人习惯到处编写XML配置文件,甚至可以设置简单的Java EE应用程序。 如今,使用Java或Groovy来配置项目已成为一种首选方式–您只需要看一下Spring框架的其他版本中引入的Gradle或功能,就可以对此进行总结。 现在&…

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&…

浅谈自记忆函数

浅谈自记忆函数 最近阅读《JavaScript忍者秘籍》看到了一种有趣的函数:自记忆函数。 简介 何为自记忆函数?书中提到: 记忆化(memoization)是一种构建函数的处理过程,能够记住上次计算结果 通过这句话可以…

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占比&#…

使用Google GSON:额外的赠品:第二部分

如果您错过了系列的第一篇文章 ,我们将继续上一篇文章的“使用GSON ” ,这里是link 。 因此,这里我们进行另一系列的讨论。 版本支持 如果要维护一个对象的多个版本以进行JSON转换,则Google GSON库具有不错的Since注释。 该注释可…

Python开发【第2节】【Python运算符】

Python语言支持以下类型的运算符: 算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级1、算术运算符 假设变量a 10,变量b 21: 运算符描述实例加 - 两个对象相加a b 输出结果 31-减 - 得…

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

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

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

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

AJAX跨域问题解决方法(1)——禁止浏览器进行跨域限制

思路:通过命令行修改浏览器启动参数,使得浏览器不进行跨域检查,从而允许跨域 方法:命令行参数启动浏览器后添加参数--disable-web-security 例:chrome --disable-web-security --disabl-web-security参数的作用是禁…

Android Studio 管理所有程序退出

import android.app.Activity; import java.util.ArrayList; import java.util.List;public class fa {public static List<Activity> activitieanew ArrayList<>();public static void add(Activity act){activitiea.add(act);//在创建活动是加入}public static v…

项目学生:Web服务集成

这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性和分片集成测试数据 。 早些时候&#xff0c;我们成功地针对持久性/业务层&#xff08;使用嵌入式H…

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

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

某制冷设备制造厂商

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

原生JS实现的DOM操作笔记(草稿整理)

原生JS实现的DOM一系列操作参考&#xff1a; 原生JavaScript封装DOM库siblings: 原生JS-查找相邻的元素-siblings方法的实现addClass,removeClass,hasClass,toggleClass&#xff1a;原生js添加删除class原生js添加删除class 代码如下&#xff1a; var dom {/** 功能说明&…

简单的Gradle Java插件自定义

正如我在“ 用Gradle构建Java的初步了解”一文中所展示的那样&#xff0c;当人们使用Java插件并将文件和目录放置在该插件期望的位置时&#xff0c; Gradle尤其适用于构建Java应用程序的基础知识&#xff08;惯例-基于项目的布局 &#xff09;。 但是&#xff0c;并非总是有一种…

k8s 重点

这几个月参与了几场面试&#xff0c;设计了多道面试题&#xff0c;觉得可以综合考察应聘人对 kubernetes的掌握情况。在这里分享下&#xff0c;供应聘人自查以及其他面试官参考。 这些面试题的设计初衷并不是考察 kubernetes 的使用。这种笔者认为较为流于表面&#xff0c;因为…

python中print的用法_python中print用法

print用法 参考文档&#xff1a; https://blog.csdn.net/sinat_28576553/article/details/81154912 目录 一、print()函数概述 二、变量的输出 三、数据的格式化输出 3.1 %字符 3.2 最小字段宽度和精度 3.3 转换标志 3.4 格式字符归纳 四、换行与防止换行 一、print()函数概述 …

java 播放.pcm文件,java播发PCM文件

java播放PCM文件import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioSystem;import javax.sound.sa…