首页 技术 正文
技术 2022年11月6日
0 收藏 596 点赞 856 浏览 2206 个字

高效分页存储过程

--分页存储过程示例
Alter PROCEDURE [dbo].[JH_PageDemo]
@pageSize int = 9000000000,
@pageIndex int = 1 ,
@orderBy Nvarchar(200) = '' -- 不加order By
AS
SET NOCOUNT ON
--声明变量
DECLARE @select VARCHAR(3048);
DECLARE @from VARCHAR(512);
DECLARE @RowNumber VARCHAR(256);
DECLARE @condition nVARCHAR(3990);
DECLARE @groupBy varchar(50);
DECLARE @sql VARCHAR(3998);
DECLARE @RowStartIndex INT;
DECLARE @RowEndIndex INT;
BEGIN
SET NOCOUNT on
IF @orderBy <> ''
Set @orderBy = ' ORDER BY ' + @orderBy;
else
Set @orderBy = ' ORDER BY Userid ' ;
SET @select = ' select userid,username ,';
--设置排序语句
SET @RowNumber ='ROW_NUMBER() OVER (' + @orderBy + ' ) as RowNumber ';
SET @select = @select + @RowNumber; SET @from = ' FROM users ';
--设置条件语句@GULevel
SET @condition = ' WHERE 1=1 ';
SET @condition = @condition + 'AND userid > 0';
--分组语句
SET @groupBy = ' GROUP BY USerID ' SET @RowStartIndex = ( @pageIndex -1) * @pageSize + 1
SET @RowEndIndex = @pageIndex * @pageSize ; --查询结果
SET @sql = 'SET NOCOUNT ON;
WITH ResultTable AS ( ' + @select + @from + @condition +')
SELECT * FROM ResultTable WHERE RowNumber between ' +
Cast(@RowStartIndex AS VARCHAR(32)) + ' AND ' + CAST(@RowEndIndex AS VARCHAR(32))
+ ' ; SELECT count(*) as totalcount ' + @from + @condition + ' '
;
--PRINT @sql;
EXEC(@sql); END

  

–分页存储过程示例
Alter PROCEDURE [dbo].[JH_PageDemo]
 @pageSize int = 9000000000,
 @pageIndex int = 1 ,
 @orderBy   Nvarchar(200) = ” — 不加order By
AS
SET NOCOUNT ON
–声明变量
DECLARE @select   VARCHAR(3048);
DECLARE @from       VARCHAR(512);
DECLARE @RowNumber   VARCHAR(256);
DECLARE @condition  nVARCHAR(3990);
DECLARE @groupBy varchar(50);
DECLARE @sql    VARCHAR(3998);
DECLARE @RowStartIndex INT;
DECLARE @RowEndIndex INT;

BEGIN
 SET NOCOUNT on
 IF @orderBy <> ”
  Set @orderBy = ‘ ORDER BY  ‘  + @orderBy;
 else
  Set @orderBy = ‘ ORDER BY Userid ‘ ;

SET @select = ‘ select userid,username ,’;

–设置排序语句
 SET @RowNumber =’ROW_NUMBER() OVER (‘ + @orderBy + ‘ ) as RowNumber ‘;  
 SET @select = @select  + @RowNumber;
 
   SET @from = ‘ FROM users  ‘;

–设置条件语句@GULevel
 SET @condition = ‘  WHERE 1=1 ‘; 
 SET @condition = @condition  + ‘AND userid > 0’;

–分组语句
 SET @groupBy = ‘ GROUP BY USerID ‘
 
 SET @RowStartIndex = ( @pageIndex -1) * @pageSize + 1
 SET @RowEndIndex =  @pageIndex  * @pageSize ;
 
 –查询结果 
 SET @sql = ‘SET NOCOUNT ON; 
 WITH ResultTable AS ( ‘ + @select + @from + @condition +’)
 SELECT * FROM ResultTable WHERE RowNumber between ‘ +
 Cast(@RowStartIndex AS VARCHAR(32)) + ‘ AND ‘ + CAST(@RowEndIndex AS VARCHAR(32))
 + ‘  ; SELECT  count(*) as totalcount  ‘  + @from + @condition + ‘  ‘
 ;
 –PRINT @sql;
 EXEC(@sql); 
 
END

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,035
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,521
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,369
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,150
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,783
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,864