zoukankan      html  css  js  c++  java
  • 高效sql2005分页存储过程

    高效分页存储过程

    --分页存储过程示例
    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

  • 相关阅读:
    记录idea run dashboard设置 (微服务项目多服务启动)
    记录Java8中的字符串转数组再通过指定符号拼接
    Java 调用底层接口的几种方法
    工作两个月以后的感想
    几种开源工作流引擎的简单比较
    labin编译的另一种方式
    最近参加一个团队创业项目的感触
    gof设计模式——生成器c++实现
    gof设计模式——抽象工厂 c++实现
    几种开源网络爬虫的简单比较
  • 原文地址:https://www.cnblogs.com/joke168/p/3546318.html
Copyright © 2011-2022 走看看