sql分页存储过程

SQL Server 存储过程的分页方案比拼 SQL Server 存储过程的分页,这个问题已经讨论过几年了,很多朋友在问我,所以在此发表一下我的观点建立表:CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] [nva 阅读详情

 今天要用到sql分页存储过程,从网上搜索了多个比较一下,

/*分页存储过程
Descript:分页存储过程
*/
CREATE PROCEDURE database_PageList(
@tblName nvarchar(200), ----要显示的表或多个表的连接
@fldName nvarchar(200) = '*', ----要显示的字段列表
@pageSize int, ----每页显示的记录个数
@page int, ----要显示那一页的记录
@pageCount int = 1 output, ----查询结果分页后的总页数
@Counts int = 1 output, ----查询到的记录数
@fldSort nvarchar(100) = null, ----排序字段列表或条件
@Sort bit, ----排序方法,0为升序,1为降序
@strCondition nvarchar(200), ----查询条件,不需where
@ID nvarchar(50) ----主表的主键
)
AS
SET NOCOUNT ON
Declare @sqlTmp nvarchar(1000) ----存放动态生成的SQL语句
Declare @strTmp nvarchar(1000) ----存放取得查询结果总数的查询语句
Declare @strID nvarchar(1000) ----存放取得查询开头或结尾ID的查询语句
Declare @sqlSort nvarchar(200) ----存放临时生成的排序条件
Declare @intCounts int ----要移动的记录数
Declare @BeginID int ----开始的ID
Declare @EndID int ----结束的ID



--------首先生成排序方法---------
if @Sort=0 --升序
begin
if not(@fldSort is null)
set @sqlSort = ' Order by ' + @fldSort
else
set @sqlSort = ' Order by ' + @ID
end
else --降序
begin
if not(@fldSort is null)
set @sqlSort = ' Order by ' + @fldSort + ' DESC'
else
set @sqlSort = ' Order by ' + @ID + ' DESC '
end


--------生成查询语句--------
--此处@strTmp为取得查询结果数量的语句
if @strCondition is null --没有设置显示条件
begin
set @sqlTmp = @fldName + ' From ' + @tblName
set @strTmp = 'select @Counts=Count(' + @ID + ') FROM '+@tblName
set @strID = ' From ' + @tblName
end
else
begin
set @sqlTmp = + @fldName + 'From ' + @tblName + ' where ' + @strCondition
/* set @sqlTmp = + @fldName + 'From ' + @tblName */
set @strTmp = 'select @Counts=Count(' + @ID + ') FROM '+@tblName + ' where ' + @strCondition
set @strID = ' From ' + @tblName + ' where ' + @strCondition
end



----取得查询结果总数量-----
exec sp_executesql @strTmp,N'@Counts int out ',@Counts out

--取得分页总数
if @Counts <= @pageSize
set @pageCount = 1
else
set @pageCount = (@Counts / @pageSize) + 1


--计算要移动的记录数
if @page = 1
set @intCounts = @pageSize
else
begin
set @intCounts = (@page-1) * @pageSize + 1
end

-----取得分页后此页的第一条记录的ID
set @strID = 'select @BeginID=' + @ID + ' ' + @strID



set @intCounts = @intCounts - @pageSize + 1
set rowcount @intCounts
exec sp_executesql @strID,N'@BeginID int out ',@BeginID out

-----取得分页后此页的最后一条记录的ID
set @intCounts = @intCounts + @pageSize - 1
print @intCounts
set rowcount @intCounts
exec sp_executesql @strID,N'@BeginID int out ',@EndID out


------恢复系统设置-----
set rowcount 0
SET NOCOUNT OFF

------返回查询结果-----
if @strCondition is null
set @strTmp = 'select ' + @sqlTmp + ' where ' + @ID + ' between ' + str(@BeginID) + ' and ' + str(@EndID)
else
/* set @strTmp = 'select ' + @sqlTmp + ' where ' + @ID +' between ' + str(@BeginID) + ' and ' + str(@EndID) + ' and ' + @strCondition */
set @strTmp = 'select ' + @sqlTmp + ' and ' + @ID +' between ' + str(@BeginID) + ' and ' + str(@EndID)
/* set @strTmp = 'select ' + @sqlTmp + ' and (' + @ID +' between ' + str(@BeginID) + ' and ' + str(@EndID) + ') and ' + @strCondition */
/* set @strTmp = 'select * from tbproduct where (xid between 1 and 2) and xvisible = 1' */

if not(@sqlSort is null)
set @strTmp = @strTmp + @sqlSort
exec sp_executesql @strTmp
GO

 

postgresql分页 postgresql实现动态分表脚本,用于本 人 自己使 用,其他人不要下载 。 立即下载

相关推荐

Mybatis调用PostgreSQL存储过程实现数组入参传递

前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 代码如下:CREATE OR REPLACE FUNCTION “public”.”func_arr_update”(ids _int4)… 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又将如何处理呢?其实很简单,mybatis提供了typeHandlers可以创建一个数组类型的类型处理器,具体做法为:实现 org.apache.

Oracle、MySQL、sqlserver、PG数据库分页实现方案总结

概述 今天主要总结一下Oracle、MySQL、sqlserver、PG数据库在分页上的一些实现方案及对比,仅供参考。 一、Oracle分页实现 oracle的分页一共有三种方式,但在Oracle中实现分页的方法主要是用ROWNUM关键字和用ROWID关键字两种。 Rownum 和 Rowid是Oracle数据库所特有的,通过他们可以查询到指定行数范围内的数据记录。 1、根据rowid来分 Oracle使用rowid数据类型存储行地址,rowid是物理存在的,实际存在的一个列,是一种数据类型。 基于64为编

淡定波的博客 2453

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 700

【数据库性能测试实战】测试不同分页存储过程在10w,100w以及1000w数据量下面的表现

前言 数据库的性能与每一行代码息息相关,所以,每次写代码可以考虑一下在不同级别的数据量下面测试一下性能。 本文参考了: Postgresql生成大量测试数据 以及 postgresql 时区与时间函数 准备测试用数据 此次测试我们将分别用10w,100w以及1000w级别的表来测试,下面先建立一波数据表。 -- 测试用数据表,分别为10w,100w以及1000w级别。表结构基本一致。 create...

一名普通码农的菜地 877

Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置)

本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。

weixin_29200741的博客 328

AI数字人短视频数字人口播数字人分身建模流程全解析

在人工智能与计算机图形学蓬勃发展的当下,数字人建模作为打造虚拟数字人的核心环节,其流程复杂且精妙,融合了多种前沿技术与创意构思,为栩栩如生的数字人形象奠定基石。​。

2403_87518095的博客 1447

plsql存储过程,分页查询

学习记录  procedure PQ_PS_OrderList ( I_PageSize In Number, --每页记录数 I_PageNO In Number, --当前页数 O_OutRecordCount Out Number, --记录总数 O_OutCursor Out t_cursor, --返回游标 ...

干啥鸭的博客 872

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 290

sql 存储过程分页

系统存储过程sp_depends这个存储过程专门用来查看一个数据库对象引用了哪些其它的数据库对象 比如要看一个存储过程用到了哪些表及字段,就可以写: exec sp_depends sp_procedure 如果是表名要加引号 exec sp_depends MyTable 同样可以检查触发器 这个存储过程对于检查一个存储过程是很方便的,我们使用它就可以看到存储过程

shuilv2000的专栏 730

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置)

本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。

weixin_29054399的博客 610

RFID射频识别技术介绍及简单应用

简单介绍RFID技术及其简单应用,后附简单门禁制作方法和代码

来者皆是客。 1万+

SQL 分页存储过程实战指南

在数据库应用中,分页是一种常见的需求,特别是在展示大量数据时。使用 SQL 存储过程实现分页不仅可以提高查询效率,还能增强代码的可维护性和安全性。本文将介绍如何使用 SQL 存储过程实现分页查询。

DotNet技术匠 1588

均匀直线阵的常规波束形成matlab

常规波束形成概述 波束形成是将基阵各阵元输出进行一定的处理,从而形成基阵空间指向性的技术。一个波束形成器可以对空间某方位的信号有响应,而抑制其他方位的信号,所以又被称为空域滤波。一般分为常规波束形成(CBF)和自适应波束形成(ABF)。 常规波束形成较为基础,一般又可以根据实现的途径不同,分为时延波束形成和频移波束形成。 时延波束形成 在各阵元间添加时延使波束控制于不同方位的方法成为时延波束形成。设定一个目标方向,当信号来源方向在该目标方向时,响应最大;信号来源于其他方向时,响应较小。将这种响应大小

Xujing1143的博客 2万+

SQL 分页存储过程

GO /****** Object: StoredProcedure [dbo].[UP_GetRecordByPage] Script Date: 2020-09-24 13:20:25 ******/ DROP PROCEDURE [dbo].[UP_GetRecordByPage] GO /****** Object: StoredProcedure [dbo].[UP_GetRecordByPage] Script Date: 2020-09-24 13:20:25 ****...

1655

【CANoe】CAPL_ECU上电后首帧报文发出时间检测

【CANoe】CAPL_ECU上电后首帧报文发出时间检测,通过CANoe I/O口检测电压实现

星Yeah 的博客 2509

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Sql分页存储过程

/*分页存储过程*/drop proc Proc_ListPageCreate proc Proc_ListPage( @tblName   nvarchar(200),          ----要显示的表或多个表的连接 @fldName   nvarchar(500) = *,    ----要显示的字段列表 @pageSize  int = 10,               ----每

1984

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

sql分页存储过程有排序

USE [GomeCPS]GO/****** Object: StoredProcedure [dbo].[proc_DataPagination] Script Date: 01/21/2016 15:58:06 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO /****************************...

abs636636的博客 188

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SQL通用分页存储过程

SQL通用分页存储过程 SQL2000 /********************************************************************************* * Function: SqlPage * Description: * 超强通...

XR1986687846的博客 223

SQL分页语句及简单的SQL分页存储过程

假分页:从数据库中选择所有的记录后再进行分页真分页:只从数据库中选择当前页的记录     Sql代码 <a title="复制代码" onclick="function onclick(){dp.sh.Toolbar.CopyToClipboard(this);return false;}" href="http://writeblog.youkuaiyun.com/#

意大利香肠 715

asp+sql2000存储过程分页实例

1.返回记录集总数存储过程:CREATE procedure dbo.recordCount(@TableName nvarchar(100),--数据库表名@strWhere nvarchar(500),--查询条件@count int output---输出值,记录集总数)asdeclare @sqlStr nvarchar(1000)if @strWhere !=    set @sql

一天到晚游泳的鱼^_^ 6479

C#调用SQL Server分页存储过程

C#调用SQL Server分页存储过程

中国风 5294

Delphi调用SQL分页存储过程实例

//-----下面是一个支持任意表的 SQL SERVER2000分页存储过程//----分页存储过程开始创建-----------------------------------------------------------------------------------------------------------IF EXISTS (SELECT name FROM sysobj

Hsu Chong 的专栏 1280

SQL分页存储过程

<div id="_mcePaste">--存储过程实现分页</div><div id="_mcePaste">if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_splitpage]') and OBJECTPROPERTY(id, N'IsProcedure') = ...

weixin_30737363的博客 121
上一篇: 档案无处不在
下一篇: 通用高效分页存储过程代码
dotnet90
博客等级 码龄23年 102粉丝 413原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值