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

  • 相关阅读:
    Future和Callable的使用
    Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 1:解码文件头
    jQuery 表格排序插件 Tablesorter 使用
    jQuery 表单验证插件 jQuery Validation Engine 使用
    jQuery 文本编辑器插件 HtmlBox 使用
    开源视频质量评价工具: IQA
    hql 语法与详细解释
    MYSQL常用命令
    C++发送HTTP请求获取网页HTML代码
    编译运行Red5源代码
  • 原文地址:https://www.cnblogs.com/joke168/p/3546318.html
Copyright © 2011-2022 走看看