高效分页存储过程

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

高效sql2005分页存储过程的更多相关文章

  1. SQL2005分页存储过程(支持多表联接)

    Code /*********************************************************   * 作    用:数据分页(完整SQL分页存储过程(支持多表联接)) ...

  2. sql server 2000 单主键高效分页存储过程 (支持多字段排序)

    sql server 2000 单主键高效分页存储过程 (支持多字段排序) Create PROC P_viewPage             /*              nzperfect [ ...

  3. SQL Server 2008 通用分页存储过程

    1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...

  4. 通用sqlserver分页存储过程

    来自:http://www.cnblogs.com/vagerent/archive/2007/10/17/927825.html 单主键: CREATE PROC P_viewPage    /** ...

  5. 支持DISTINCT的通用分页存储过程(SQL2005)

    /****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...

  6. 如此高效通用的分页存储过程是带有sql注入漏洞的

    原文:如此高效通用的分页存储过程是带有sql注入漏洞的 在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如 ...

  7. 分页存储过程--From:桌面备份 -> sql2005新功能.docx

    二.以下示例将返回行号为 50 到 60(含)的行,并以 OrderDate 排序. USE AdventureWorks; GO WITH OrderedOrders AS (SELECT Sale ...

  8. SQL 2005 分页存储过程

    -- ============================================= -- Description:   <高效分页存储过程,适用于Sql2005以上> -- ...

  9. 完整的分页存储过程以及c#调用方法

    高效分页存储过程 USE [db] GO /****** 对象: StoredProcedure [dbo].[p_Page2005] 脚本日期: // :: ******/ SET ANSI_NUL ...

随机推荐

  1. Linux安装mysql-5.7.17

    一.检查系统是否有自带安装MySQL 1.检查 [root@centos ~]# rpm -qa | grep -i mysql mysql-libs-5.1.71-1.el6.x86_64 2.卸载 ...

  2. 从 JavaScript 到 TypeScript 系列

    随着应用的庞大,项目中 JavaScript 的代码也会越来越臃肿,这时候许多 JavaScript 的语言弊端就会愈发明显,而 TypeScript 的出现,就是着力于解决 JavaScript 语 ...

  3. Python实战之dict简单练习

    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__forma ...

  4. 配置zabbix agent向多个server发送数据

    1.背景: agent 端:dba-test-hzj02  172.16.59.197 server端:172.16.59.197  ,172.16.59.98 2.方式: 配置多个server,se ...

  5. webpack2使用ch7-loader解析css 自动添加浏览器前缀

    1 目录结构  安装的依赖 "autoprefixer": "^6.7.7", "css-loader": "^0.28.0&qu ...

  6. 实现LAMP

    实现LAMP 1.LAMP工作原理 LAMP是一个强大的Web应用程序平台,其中L是指linux系统:A是指apache也就是http;M一般是mysql/mariadb数据库;P一般是php, pe ...

  7. 51nod 1522 上下序列

    题目描述 现在有1到n的整数,每一种有两个.要求把他们排在一排,排成一个2*n长度的序列,排列的要求是从左到右看,先是不降,然后是不升. 特别的,也可以只由不降序列,或者不升序列构成. 例如,下面这些 ...

  8. php 变量 循环关键词以及方法

    <?php/* 多行注释 */常用数据类型int string double/float bool变量的定义$a = 123;$b = "123";$c = '456';$d ...

  9. Java策略模式以及来自lambda的优化

    前言    设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式 ...

  10. SAP 动态设置 GUI STATUS 灰色不可用 或者隐藏(转)

    http://blog.sina.com.cn/s/blog_66110f6201017rul.html 有时候需要根据用户的权限或者是操作动态设置gui状态上的某些按钮的可用和不可用.   1.先定 ...