一个比较实用的大数据量分页存储过程
作者:kafei | 来源:互联网 | 2022-01-22 08:39
一个比较实用的大数据量分页存储过程
create proc sp_PublicTurnPageWebSite(
@TBName nvarchar(100)='', --表名,如 pinyin
@PageSize int=10, --每页的记录数,默认为 10
@CurPage int=1, --表示当前页 1
@KeyField nvarchar(100)='ID', --关键字段名,默认为 ID,该字段要求是表中的索引 或 无重复和不为空的字段
@KeyAscDesc nvarchar(4)='ASC', --关键字的升、降序,默认为升序 ASC , 降序为 DESC
@Fields nvarchar(500)='*', --所选择的列名,默认为全选
@Condition nvarchar(200)='', --where 条件,默认为空
@Order nvarchar(200)='' --排序条件,默认为空
) with encryption as
if @TBName = ''
begin
raiserror('请指定表名!',11,1)
return
end
if @PageSize <=0 or @CurPage <0
begin
raiserror('当前页数和每页的记录数都必须大于零!',11,1)
return
end
if @KeyAscDesc = 'DESC'
set @KeyAscDesc = '<'
else
set @KeyAscDesc = '>'
if @Condition <> ''
set @Condition = ' where ' + @Condition
declare @SQL nvarchar(2000)
set @SQL = ''
if @CurPage = 1
set @SQL = @SQL + 'Select Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + ' ' + @Order
else
begin
declare @iTopNum int
set @iTopNum = @PageSize * (@CurPage - 1)
set @SQL = @SQL + 'declare @sLastValue nvarchar(100)' + char(13)
set @SQL = @SQL + 'Select Top ' + cast(@iTopNum as nvarchar(20)) + ' @sLastValue=' + @KeyField + ' FROM ' + @TBName + @Condition + ' ' + @Order + char(13)
declare @Condition2 nvarchar(200)
if @Condition = ''
set @Condition2 = ' where ' + @KeyField + @KeyAscDesc + '@sLastValue '
else
set @Condition2 = ' and ' + @KeyField + @KeyAscDesc + '@sLastValue '
set @SQL = @SQL + 'Select Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + @Condition2 + @Order
end
EXECUTE sp_executesql @SQL
推荐阅读
-
在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ...
[详细]
蜡笔小新 2024-11-14 10:15:02
-
在将Web服务器和MySQL服务器分离的情况下,是否需要在Web服务器上安装MySQL?如果安装了MySQL,如何解决PHP连接MySQL服务器时出现的连接失败问题? ...
[详细]
蜡笔小新 2024-11-13 23:06:58
-
-
本文详细介绍了操作系统如何通过进程控制块(PCB)来管理和控制进程。PCB是操作系统感知进程存在的重要数据结构,包含了进程的标识符、状态、资源清单等关键信息。 ...
[详细]
蜡笔小新 2024-11-13 16:14:39
-
一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ...
[详细]
蜡笔小新 2024-11-13 15:49:49
-
DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ...
[详细]
蜡笔小新 2024-11-13 12:25:33
-
本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ...
[详细]
蜡笔小新 2024-11-13 11:09:46
-
com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ...
[详细]
蜡笔小新 2024-11-13 10:47:33
-
近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境 ...
[详细]
蜡笔小新 2024-11-12 22:05:03
-
本文介绍了在 MySQL 中如何使用正则表达式来提高查询效率,通过具体示例展示了如何筛选包含中文字符的记录,并详细解释了正则表达式的各种特殊字符和结构。 ...
[详细]
蜡笔小新 2024-11-12 21:03:49
-
createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ...
[详细]
蜡笔小新 2024-11-12 19:26:15
-
本文介绍如何在将数据库从服务器复制到本地时,处理因外键约束导致的数据插入失败问题。 ...
[详细]
蜡笔小新 2024-11-12 19:05:11
-
本视频教程将带你快速了解 Android 开发的基础知识,并详细讲解如何在 Android 应用中使用 SQLite 数据库进行数据存储和管理。 ...
[详细]
蜡笔小新 2024-11-12 18:59:48
-
CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ...
[详细]
蜡笔小新 2024-11-12 18:20:52
-
本文介绍了在 Spring Boot 中使用 JPA 进行数据删除操作时遇到的 SQL 错误及其解决方法。错误表现为:删除操作失败,原因是无法打开 JPA EntityManager 以进行事务处理。 ...
[详细]
蜡笔小新 2024-11-12 18:01:11
-
importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ...
[详细]
蜡笔小新 2024-11-12 16:51:59
-