SQL ROW_NUMBER() 通用分页存储过程
--提取分页数据,返回总记录数
Create procedure [dbo].[sp_Common_GetDataPaging_ReturnDataCount]
(
@SqlString varchar(max), --查询语句
@PageNumber int, --当前的页码
@PageSize int, --每页显示的数据量
@SequenceField varchar(100), --排序字段
@DataCount int out --总数据量
)
as
begin DECLARE @SqlAll VARCHAR(MAX)
DECLARE @Sql1 VARCHAR(MAX)
SET @SqlAll= @SqlString --提取总记录数
declare @Sqlcount nvarchar(max)
set @Sqlcount = ISNULL(@Sql1,' ')+' '+N'select @countNum = count(1) from ('+@SqlString+') as aaaaaaaaa'
exec sp_executesql @Sqlcount,N'@countNum int out',@DataCount out declare @BNum int
declare @ENum int
declare @sql2 varchar(max);
set @BNum = (@PageNumber-1)*@PageSize+1
set @ENum = @PageNumber*@PageSize
if(@PageNumber>200 or @PageSize>200)
begin
set @SqlString = substring(@SqlString,charindex('select',@SqlString)+6,len(@SqlString))
--set @SqlString = 'SELECT * FROM (SELECT ROW_NUMBER() OVER ( ORDER BY '+@SequenceField+' ) AS RowNumber121 ,'+@SqlString +' ) as pageinga123 WHERE RowNumber121 BETWEEN '+convert(varchar(10),@BNum)+' AND '+convert(varchar(10),@ENum)+' ORDER BY RowNumber121 ' set @SqlString = 'SELECT * into #temp FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY '+@SequenceField+' ) AS RowNumber121 ,'+@SqlString +' ) as pageinga123 '
set @SqlString=@SqlString+' CREATE INDEX mycolumn_index ON #temp (RowNumber121) '
set @sql2='select *from #temp WHERE RowNumber121 BETWEEN '+convert(varchar(10),@BNum)+' AND '+convert(varchar(10),@ENum)+' ORDER BY RowNumber121 '
SET @Sql1 = ISNULL(@Sql1,' ')+' '+ @SqlString+@sql2
--SET @Sql1 = ISNULL(@Sql1,' ')+' '+ @SqlString
exec(@Sql1)
end
else begin
set @SqlString = substring(@SqlString,charindex('select',@SqlString)+6,len(@SqlString)) set @SqlString = 'SELECT * FROM (SELECT ROW_NUMBER() OVER ( ORDER BY '+@SequenceField+' ) AS RowNumber121 ,'+@SqlString +' ) as pageinga123 WHERE RowNumber121 BETWEEN '+convert(varchar(10),@BNum)+' AND '+convert(varchar(10),@ENum)+' ORDER BY RowNumber121 '
SET @Sql1 = ISNULL(@Sql1,' ')+' '+ @SqlString
exec(@Sql1)
end end
SQL ROW_NUMBER() 通用分页存储过程的更多相关文章
- Sql Server通用分页存储过程
Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 ...
- SQL SERVER 通用分页存储过程,两种用法任你选
写在前面 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和 ...
- SQL Server 通用分页存储过程
create proc commonPagination ), --要显示的列名,用逗号隔开 ), --要查询的表名 ), --排序的列名 ), --排序的方式,升序为asc,降序为 desc ), ...
- SQL Server的通用分页存储过程 未使用游标,速度更快!
经过一个下午的时间,和我一个同事(绝对是高手)的共同努力下,摸索出了以下的思路: 1.确定存储的输入参数: 1)SQL脚本,该参数接收完整的.正确的SQL检索文本,可将原应用中写好的SQL脚本直接传入 ...
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- MySql通用分页存储过程
MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...
- Oracle通用分页存储过程的创建与使用
Oracle通用分页存储过程的创建与使用 1.创建Oracle包的定义.使用 REF CURSOR 数据类型来处理 Oracle 结果集.REF CURSOR 是一个指向 PL/SQL 查询所返回的结 ...
随机推荐
- 正则表达式test报错 is not a function
var reg = "/^1[34578]\d{9}$/"; //错误格式,这是一个字符串 var reg2 = /^1[34578]\d{9}$/; //正确格式 reg .te ...
- A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
在Unity3d中,我们一般常用的寻路算法: 1.A*算法插件 与贪婪算法不一样,贪婪算法适合动态规划,寻找局部最优解,不保证最优解.A*是静态网格中求解最短路最有效的方法.也是耗时的算法,不 ...
- <meta>详解
一.元数据和<meta> 元数据是描述以提供关于其他数据的数据,在<meta>中,html document是被描述的数据,meta标签中包括的数据是描述html docume ...
- Codeforces GYM 100741A . Queries
time limit per test 0.25 seconds memory limit per test 64 megabytes input standard input output stan ...
- AWS Data Lake Service Stack
- powerDesigner 一些设置
常用设置 table中需要显示的内容 --------------------------------------------------------------------------------- ...
- uva1336 Fixing the Great Wall
用到了kase避免memset超时 #include<cstdio> #include<cstring> #include<cmath> #include<a ...
- 【整理】iview中刷新页面的时候更新导航菜单的active-name
iview中刷新页面的时候更新导航菜单的active-name https://blog.csdn.net/lhjuejiang/article/details/83212070
- Java数据结构和算法(一)--栈
栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack<E> extends Vector ...
- mkdir touch vim
vim和touch都用于新建文件 mkdir用于新建文件夹