ASP 千万级数据分页的存储过程

来源:asp之家 时间:2011-04-14 11:08:00 

测试语法如下:powered by jb51.net
exec GetRecordFromPage news,newsid,10,100000
news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。

代码如下:


/* 
函数名称: GetRecordFromPage 
函数功能: 获取指定页的数据 
参数说明: @tblName 包含数据的表名 
@fldName 关键字段名 
@PageSize 每页记录数 
@PageIndex 要获取的页码 
@OrderType 排序类型, 0 - 升序, 1 - 降序 
@strWhere 查询条件 (注意: 不要加 where) 
作  者: 铁拳 
邮  箱: sunjianhua_kki@sina.com 
创建时间: 2006-07-04 
修改时间: 2006-07-04 
*/ 
CREATE PROCEDURE GetRecordFromPage 
@tblName varchar(255), -- 表名 
@fldName varchar(255), -- 字段名 
@PageSize int = 10, -- 页尺寸 
@PageIndex int = 1, -- 页码 
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 
@strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where) 
AS 

declare @strSQL varchar(6000) -- 主语句 
declare @strTmp varchar(1000) -- 临时变量 
declare @strOrder varchar(500) -- 排序类型 

if @OrderType != 0 
begin 
set @strTmp = '<(select min' 
set @strOrder = ' order by [' + @fldName + '] desc' 
end 
else 
begin 
set @strTmp = '>(select max' 
set @strOrder = ' order by [' + @fldName +'] asc' 
end 

set @strSQL = 'select top ' + str(@PageSize) + ' * from [' 
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '([' 
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' 
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' 
+ @strOrder 

if @strWhere != '' 
set @strSQL = 'select top ' + str(@PageSize) + ' * from [' 
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '([' 
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' 
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' 
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder 

if @PageIndex = 1 
begin 
set @strTmp = '' 
if @strWhere != '' 
set @strTmp = ' where (' + @strWhere + ')' 

set @strSQL = 'select top ' + str(@PageSize) + ' * from [' 
+ @tblName + ']' + @strTmp + ' ' + @strOrder 
end 

exec (@strSQL) 

GO 

标签:ASP,数据分页,存储过程
0
投稿

猜你喜欢

  • 解决MSSQL下“不能在手动或分布事务方式下创建新的连接”的问题

    2008-07-15 12:48:00
  • SQL Server 2000中生成XML的小技巧

    2009-02-13 17:12:00
  • 细线表格的处理

    2008-08-06 12:53:00
  • Asp的上下午时间格式问题

    2009-04-13 16:06:00
  • web脚本程序攻击的防范

    2007-10-18 13:29:00
  • js打开新窗口方法代码收集

    2007-09-05 19:20:00
  • url传递中文的解决方案

    2007-10-09 20:17:00
  • 再谈“字符串拼接”的效率

    2009-04-30 12:48:00
  • sql server update 表的问题

    2009-10-04 20:32:00
  • 网站开发防止中文乱码需要了解的codepage的重要性小结

    2011-03-03 11:24:00
  • MySQL UPDATE delete 语句的速度

    2008-03-12 12:22:00
  • 怎样处理 MySQL中与文件许可有关的问题

    2008-11-27 16:12:00
  • sqlserver 触发器实例代码

    2012-01-29 18:30:45
  • JavaScript 组件之旅(四):测试 JavaScript 组件

    2009-10-13 20:32:00
  • 如何在一个广告旗帜里轮番显示时间长度不一的不同广告?

    2010-06-26 12:35:00
  • ASP伪静态页简单教程

    2007-09-28 14:35:00
  • 如何从IP获知其所在地?

    2009-11-15 19:54:00
  • 网站设计输入了些什么?

    2008-04-01 09:30:00
  • css+JavaScript实现PDF、ZIP、DOC链接的标注

    2007-05-11 17:03:00
  • Oracle PL/SQL入门案例实践

    2010-07-18 13:13:00
  • asp之家 网络编程 m.aspxhome.com