千万数量级分页存储过程代码

2024-06-08 19:38

本文主要是介绍千万数量级分页存储过程代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



/*(11)==============================================================================
*sql server中千万数量级分页存储过程代码
================================================================================*/


CREATE PROCEDURE CN5135_SP_Pagination 
/* 
*************************************************************** 
参数说明: 
1.Tables :表名称,视图 
2.PrimaryKey :主关键字 
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc 
4.CurrentPage :当前页码 
5.PageSize :分页尺寸 
6.Filter :过滤语句,不带Where 
7.Group :Group语句,不带Group By 
***************************************************************/

@Tables varchar(1000), 
@PrimaryKey varchar(100), 
@Sort varchar(200) = NULL, 
@CurrentPage int = 1, 
@PageSize int = 10, 
@Fields varchar(1000) = '*', 
@Filter varchar(1000) = NULL, 
@Group varchar(1000) = NULL

AS
 
/*默认排序*/
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PrimaryKey 
 
DECLARE @SortTable varchar(100) 
DECLARE @SortName varchar(100) 
DECLARE @strSortColumn varchar(200) 
DECLARE @operator char(2) 
DECLARE @type varchar(100) 
DECLARE @prec int
 
/*设定排序语句.*/
IF CHARINDEX('DESC',@Sort)>0 
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '') 
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0 
SET @strSortColumn = REPLACE(@Sort, 'ASC', '') 
SET @operator = '>='
END
 
 
IF CHARINDEX('.', @strSortColumn) > 0 
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn)) 
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn)) 
END
ELSE
BEGIN
SET @SortTable = @Tables 
SET @SortName = @strSortColumn 
END
 
SELECT @type=t.name, @prec=c.prec 
FROM sysobjects o 
JOIN syscolumns c on o.id=c.id 
JOIN systypes t on c.xusertype=t.xusertype 
WHERE o.name = @SortTable AND c.name = @SortName 
 
IF CHARINDEX('char', @type) > 0 
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
 
DECLARE @strPageSize varchar(50) 
DECLARE @strStartRow varchar(50) 
DECLARE @strFilter varchar(1000) 
DECLARE @strSimpleFilter varchar(1000) 
DECLARE @strGroup varchar(1000) 
 
/*默认当前页*/
IF @CurrentPage < 1 
SET @CurrentPage = 1 
 
/*设置分页参数.*/
SET @strPageSize = CAST(@PageSize AS varchar(50)) 
SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50)) 
 
/*筛选以及分组语句.*/
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
 
/*执行查询语句*/
EXEC( 

DECLARE @SortColumn ' + @type + ' 
SET ROWCOUNT ' + @strStartRow + ' 
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + ' 
SET ROWCOUNT ' + @strPageSize + ' 
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + ' 
'

GO 




--动态查询输出数据
declare @sql1 nvarchar(200),@sql2 nvarchar(200)
declare @count nvarchar(100);
set @sql1 = 'SELECT CONVERT(varchar(100), GETDATE(), 0)'
set @sql2 = 'SELECT @count = CONVERT(varchar(100), GETDATE(), 0)'
exec sp_executesql  @sql2,N'@count nvarchar(50) out',@count out
print @sql1 +':'+ @count



这篇关于千万数量级分页存储过程代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043119

相关文章

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代