千万数量级分页存储过程 +AspNetPager现实分页
存储过程
USE [ForeignTradeDB]
GO
/****** Object: StoredProcedure [dbo].[CommonGetDataPager] Script Date: 2015/3/26 17:47:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[CommonGetDataPager]
/*
***************************************************************
** 千万数量级分页存储过程 **
***************************************************************
参数说明:
1.Tables :表名称,视图
2.PrimaryKey :主关键字
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
4.CurrentPage :当前页码
5.PageSize :分页尺寸
6.Filter :过滤语句,不带Where
7.Group :Group语句,不带Group By update by Eraker 2011/11/15
***************************************************************/
(
@Tables varchar(),
@PrimaryKey varchar(),
@Sort varchar() = NULL,
@CurrentPage int = ,
@PageSize int = ,
@Fields varchar() = '*',
@Filter varchar() = NULL,
@Group varchar() = NULL
)
AS
/*
测试参数 DECLARE @return_value int
EXEC @return_value = [dbo].[CommonGetDataPager]
@Tables = N'xfq_CustomerVisits left join xfq_M_MemberPoints on xfq_CustomerVisits.MemberLogin=xfq_M_MemberPoints.MemberLogin',
@PrimaryKey = N'xfq_CustomerVisits.ID',
@Sort = N'xfq_CustomerVisits.ExtendField2 desc ',
@CurrentPage =4,
@PageSize = 10,
@Fields = N' xfq_CustomerVisits.ID,xfq_CustomerVisits.Memberlogin,xfq_CustomerVisits.Name,xfq_CustomerVisits.Mobile,xfq_CustomerVisits.ExtendField2,xfq_CustomerVisits.ExtendField7',
@Filter = N'xfq_CustomerVisits.ExtendField1<>2',
@Group = NULL
*/ /*默认排序*/
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PrimaryKey DECLARE @SortTable varchar()
DECLARE @SortName varchar()
DECLARE @SortName2 varchar()
DECLARE @strSortColumn varchar()
DECLARE @operator char()
DECLARE @type varchar()
DECLARE @prec int /*设定排序语句.*/
IF CHARINDEX('DESC',@Sort)>
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
--SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) =
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
--SET @operator = '>='
END set @SortName2= IF CHARINDEX('.', @strSortColumn) >
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, , CHARINDEX('.',@strSortColumn))
-- IF CHARINDEX(',', @strSortColumn) >
-- begin
-- SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + , CHARINDEX(',', @strSortColumn)-CHARINDEX('.',@strSortColumn) - )
-- set @sortname2=SUBSTRING(@strSortColumn, CHARINDEX(',',@strSortColumn) +len(@SortTable)+ , LEN(@strSortColumn))
-- end
--else
-- begin
-- SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + , LEN(@strSortColumn))
-- end
END
ELSE
BEGIN
SET @SortTable = @Tables
--SET @SortName = @strSortColumn
END --SELECT @type=t.name, @prec=c.prec
--FROM sysobjects o
--JOIN syscolumns c on o.id=c.id
--JOIN systypes t on c.xusertype=t.xusertype
--WHERE o.name = @SortTable AND c.name in (@SortName,@SortName2) --IF CHARINDEX('char', @type) >
-- SET @type = @type + '(' + CAST(@prec AS varchar) + ')' DECLARE @strPageSize int
DECLARE @strStartRow int
DECLARE @strFilter varchar()
DECLARE @strSimpleFilter varchar()
DECLARE @strGroup varchar() /*默认当前页*/
IF @CurrentPage <
SET @CurrentPage = /*设置分页参数.*/
SET @strPageSize = CAST(@PageSize AS int)
SET @strStartRow = CAST(((@CurrentPage - )*@PageSize + ) AS int) /*筛选以及分组语句.*/
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
--SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = '' /*执行查询语句*/ --declare @strSQL varchar()
--set @strSQL='SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY '+@Sort+') AS ROWID,'
--set @strSQL=@strSQL+@Fields+' FROM '+@Tables+@strFilter+' '+ @strGroup
--set @strSQL=@strSQL+') AS sp WHERE ROWID BETWEEN '+str((@CurrentPage-)*@strPageSize+)
--set @strSQL=@strSQL+' AND '+str(@strStartRow+@strPageSize-)
--exec (@strSQL) declare @strSQL varchar()
set @strSQL='WITH TB1 AS ('
set @strSQL=@strSQL+'SELECT ROW_NUMBER() OVER (ORDER BY '+@Sort+') AS ROWID,'
set @strSQL=@strSQL+@Fields+' FROM '+@Tables+@strFilter+' '+ @strGroup
set @strSQL=@strSQL+'), TB2 AS ( SELECT COUNT(1) AS ROWS FROM TB1 ) SELECT * FROM TB1,TB2 '
SET @strSQL=@strSQL+'WHERE ROWID BETWEEN '+str((@CurrentPage-)*@strPageSize+)
set @strSQL=@strSQL+' AND '+str(@strStartRow+@strPageSize-)
exec (@strSQL)
后台代码
DataTable dt = new Product_Bll().CommonGetDataPager(表名称,视图, 关键字段, 排序字段, AspNetPager1.CurrentPageIndex, AspNetPager1.PageSize, 需要获取的字段, 条件,Group语句
); AspNetPager1.RecordCount = dt==null?:Convert.ToInt32(dt.Rows[]["ROWS"]);//AspNetPager插件
rpt_Pro_Class.DataSource = dt;
rpt_Pro_Class.DataBind();
if (dt == null) {
this.lbl_No_Record.Text = "<tr><td height=30 colspan=10>没有找到任何数据!</td></tr>"; }
else { this.lbl_No_Record.Text = ""; }
千万数量级分页存储过程 +AspNetPager现实分页的更多相关文章
- MySql通用分页存储过程
MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...
- SQL 单表分页存储过程和单表多字段排序和任意字段分页存储过程
第一种:单表多字段排序分页存储过程 --支持单表多字段查询,多字段排序 create PROCEDURE [dbo].[UP_GetByPageFiledOrder] ( ), --表 ...
- 完整的分页存储过程以及c#调用方法
高效分页存储过程 USE [db] GO /****** 对象: StoredProcedure [dbo].[p_Page2005] 脚本日期: // :: ******/ SET ANSI_NUL ...
- 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上
-- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
- sql server 分页存储过程
----------------------分页存储过程------------------------------------------------------------------------ ...
- AspNetPager 免费分页控件7.5.1版发布!
AspNetPager 免费分页控件7.5.1版发布,本次升级主要内容有: 修正了ShowDisabledButtons为false时html闭合标签丢失的bug:改为从System.Web.UI.W ...
- MYSQL分页存储过程及事务处理
最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...
随机推荐
- Web工程软件升级之数据库升级(一)
1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...
- Ext.js form 表单提交问题
var form = new Ext.form.FormPanel({ labelAlign : 'right', border : false, bodyStyle : 'background-co ...
- Java native(转)
Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可以将 ...
- nginx 配置多个主机
<pre name="code" class="html"> server { listen 8001; server_name localhost ...
- union 代替or的情况
技巧2:union 代替or的情况 当SQL语句中,or 条件上面有一个为子查询,并且子查询上的表与源表不同,这个时候就可以用union代替or或者你发现执行计划中的 filter 有 or 并且 o ...
- C++学习之容器的摸索
初学容器,容易犯错的地方 1.vector,list和deque都是顺序容器.其中vector和deque都可以通过下标访问,而list不能 2. 容器的begin和end操作 c.begin()返回 ...
- AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
RandomizedQueue 有几个关键点: 1. 选择合适的数据结构,因为需要任意位置删除元素,Linked list 做不到,必须使用resizing arrays. 2. resizing 的 ...
- 使用DateAdd方法向指定日期添加一段时间间隔,使用TimeSpan对象获取时间间隔
一:使用DateAdd方法向指定日期添加一段时间间隔,截图 二:代码 using System; using System.Collections.Generic; using System.Comp ...
- 使用开源软件sentry来收集日志
原文地址:http://luxuryzh.iteye.com/blog/1980364 对于一个已经上线的系统,存在未知的bug或者运行时发生异常是很常见的事情,随之而来的几点需求产生了: 1.系统发 ...
- nat模式、路由模式,网桥模式
路由器的几种连接方式 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Fo ...