一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
CREATE PROCEDURE SelectPagedSQL
(
@SQL nvarchar(512),
@IndexField nvarchar(100),
@PageSize int=10,
@PageIndex int=1,
@Sort nvarchar(128)=@IndexField,
@TotalCount int=0 output
)
AS
declare @strSQL nvarchar(1024)
set nocount on
set @strSQL='
select @TotalCount=count(*) from ('+@SQL+') as t '
exec sp_executesql
@strSQL,
N'@TotalCount int=0 OUTPUT',
@TotalCount=@TotalCount OUTPUT
declare @ItemCount int
set @ItemCount=@TotalCount-@PageSize*@PageIndex
if(@ItemCount<0)
set @ItemCount=@ItemCount+@PageSize
else
set @ItemCount=@PageSize
if(@ItemCount<0)return 1
set @strSQL='SELECT * FROM
(SELECT TOP '+str(@ItemCount)+' * FROM
(SELECT TOP '+str(@PageSize*@PageIndex)+' * FROM
('+@SQL+') AS t0
ORDER BY '+@IndexField+' ASC) AS t1
ORDER BY '+@IndexField+' DESC) AS t2
ORDER BY ' +@Sort
exec sp_executesql
@strSQL
GO
----------------------------------
GO
SET ANSI_NULLS OFF
GO
createPROCEDURE CommGetRecordByPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 主键字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsReCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(100) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName +'] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp =''
if @strWhere != ''
set @strTmp = ' where ' + @strWhere
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
end
if @IsReCount != 0
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere
exec (@strSQL)
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
这个也不错啊
转载于:https://www.cnblogs.com/jiangyuxuan/archive/2007/08/05/843463.html
一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...相关推荐
- 第六章SQL数据库开发--TSQL—储存过程
第六章SQL数据库开发--TSQL-储存过程 6.1 TSQL-存储过程说明 存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储 ...
- oracle ajax储存过程分页,创建 Oracle 分页存储过程
1.创建Oracle包的定义.使用 REF CURSOR 数据类型来处理 Oracle 结果集.REF CURSOR 是一个指向 PL/SQL 查询所返回的结果集的指针.与普通的游标不同,REF CU ...
- MYSQL储存过程和储存函数和变量
储存过程和储存函数和变量 变量的应用: 变量分类为: 系统变量和自定义变量 系统变量和全局变量还可以细分: 系统变量分类: 全局变量和会话变量 自定义变量分类: 用户变量和局部变量 下面是变量的一些具 ...
- mysql json储存过程_SQL-mysql储存过程
一 前言 本篇内容是关于mysql储存过程的知识,学习本篇的基础是知识追寻者之前发过的文章(公众号读者看专辑) <SQL-你真的了解什么SQL么?> <SQL-小白最佳入门sql查询 ...
- [导入]SQL 分页存贮过程
SQL 分页存贮过程 文章来源:http://blog.csdn.net/vainnetwork/archive/2007/08/18/1749314.aspx 转载于:https://www.cnb ...
- mysql的储存原理_mysql储存原理
如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE. 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyI ...
- 在SQL Server中分页结果的最佳方法是什么
如果您还希望获得结果总数(在进行分页之前),那么在SQL Server 2000.2005.2008.2012中对结果进行分页的最佳方法是(性能明智的)? #1楼 最终, Microsoft SQL ...
- 因为一个bug来深入探讨下分页插件PageHelper
事情来源是这样的,因为某些操作失误,在使用分页插件pageHelper时,因为这样一句不起眼的操作,竟然引发了一系列的灾难,下面来看下灾难的由来: Page localPage = PageHelpe ...
- redis储存方式以及储存数据
redis储存方式以及储存数据介绍 Redis数据基础类型有哪些? string 普通key:value储存set name xiaoliget name--->xiaoli list 有序可以 ...
最新文章
- mysql的索引的区别_MYSQL索引区别
- 暂时放在首页,因为需要大家帮忙!!
- 如何防御syn flood的一些思路!
- Linux一个命令创建多个目录:seq命令
- Eclipse Windows环境配置
- 在python中sqrt是什么意思_python中sqrt是什么意思
- LeetCode 144 ——二叉树的前序遍历
- 面试官:你能说清楚分布式锁,进程锁,线程锁的区别吗?
- 强强联合!蚂蚁金服与新炬网络战略合作,共同致力于国产数据库的技术推广和生态建设
- turf.js API功能讲解
- Python数据分析师使用低代码Streamlit实现Web数据可视化方法——入门篇
- 客户细分_客户细分初学者指南
- 如何在idea中高效地使用和查找TODO标签
- CSS3 的动画应用
- 【2023团体程序设计天梯赛CCCC】GPLT2023,L1~L2部分(PTA,L1-089~L1-096,L2-045~L2-048)题解代码复盘
- 什么是独享锁/共享锁_java培训
- Word2vec原理与应用
- 基本的信号——冲激信号与冲激序列
- 2017四月TOP100电商类App排行榜出炉
- 服务器网站环境包,使用wips网站环境包的案例
热门文章
- windows环境给redis配置密码
- MATLAB有关数字信号处理的一些方法
- vue取通过key取value_vue怎么获取radio、checkbox选中的值
- python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
- 1.1.3 计算机的分类与发展方向(电子计算机、计算机按指令和数据流分类、计算机发展趋势正向着“两级”分化)
- python 天气预报 mysql_Python+PyQt5+MySQL实现天气管理系统
- WebRTC / Jitsi / 架构
- 启明云端分享|ESP8089 pin to pin 替代RTL8189,供应稳定、性价比高!
- 支持自定义的离线语音模块WT516P6Core 串口协议使用说明
- 触摸屏通常接在微型计算机,计算机应用基础习题答案.doc