高效分页存储过程

--分页存储过程示例
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. MongoDB学习教程(1)

    1.简介: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的高性能数据 ...

  2. Jquery实现鼠标移到某个对象,弹出显示层。

    /** * 鼠标移上去显示层 * @param divId 显示的层ID * @returns */ $.fn.myHoverTip = function(divId) { var div = $(& ...

  3. RN 常见问题

    React/RCTBridgeModule.h not found #import <React/RCTBridgeModule.h> 全部替换为 #import "RCTBri ...

  4. iOS 简单socket连接

    - (void)CreateSocket{ NSString *host = [self.realStreamDict objectForKey:@"StreamSeverIP"] ...

  5. 1、Http概述

    1.1 Web客户端和服务器 HTTP 客户端和 HTTP 服务器共同构成了万维网的基本组件,客户端向服务器发送 HTTP 请求, 服务器会在 HTTP 响应中回送所请求的数据. 示意图: 1.2 媒 ...

  6. ubuntu tftp-server 服务器安装与配置

    第一步:安装tftp服务sudo apt-get install tftpd tftp openbsd-inetd第二步:目录配置vi /etc/inetd.conf修改文件夹为根目录下的tftpbo ...

  7. 【JDK1.8】JDK1.8集合源码阅读——HashMap

    一.前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐.笔者也会顺着他的顺序来阅读一遍,除了基础的方法外,添加了其他补充内容 ...

  8. 高性能 Java 缓存库 — Caffeine

    http://www.baeldung.com/java-caching-caffeine 作者:baeldung 译者:oopsguy.com 1.介绍 在本文中,我们来看看 Caffeine - ...

  9. LeetCode 53. Maximum Subarray(最大的子数组)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  10. VUE 源码学习01 源码入口

    VUE[version:2.4.1] Vue项目做了不少,最近在学习设计模式与Vue源码,记录一下自己的脚印!共勉!注:此处源码学习方式为先了解其大模块,从宏观再去到微观学习,以免一开始就研究细节然后 ...