下载首页 | 资讯中心 | 文章分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 绿色软件 | 汉化补丁 | |
文章搜索: 分类 关键字
您的位置:首页编程开发网络编程 → ASP.NET调用oracle实现快速分页
ASP.NET调用oracle实现快速分页
来源:PPLUNCLE 作者:csdn 加入时间:2006-12-8 访问次数:41 [  ]

 本文转自PPLUNCLE的blog:http://dev.csdn.net/article/82/82808.shtm

《使用 ADO.NET 访问 Oracle 9i 存储过程》见下面的介绍(如果对这个不怎么懂的,还是先看看下面文章)http://www.microsoft.com/china/MSDN/library/data/dataAccess/DMSDNorsps.mspx  

  包定义:  

   create or replace package MaterialManage is

   TYPE T_CURSOR IS REF CURSOR;

   Procedure Per_QuickPage

   (

   TbName in varchar2, --表名

   FieldStr in varchar2, --字段集

   RowFilter in varchar2, --过滤条件

   SortStr in varchar2, --排序集

   RownumFieldStr in varchar2, --分页条件

   TotalCount out number, --总记录数

   Cur_ReturnCur out T_CURSOR --返回的游标

   );

  end MaterialManage;

  
  包主体:
  

  create or replace package body MaterialManage is

   Procedure Per_QuickPage

   (

   TbName in varchar2, --表 名

   FieldStr in varchar2, --字段集

   RowFilter in varchar2, --过滤条件

   SortStr in varchar2, --排序集

   MinRowNum in number, --分页小值

   MaxRowNum in number, --分页大值

   TotalCount out number, --总记录数

   Cur_ReturnCur out T_CURSOR

   )

   is

   v_SourceTb1 varchar2(3000); --动态表名1

   v_SourceTb2 varchar2(3000); --动态表名2

   v_SourceTb3 varchar2(3000); --动态表名3

   v_SourceTb4 varchar2(3000); --动态表名4

   v_TotalCount varchar2(50); --总记录数

   v_sql varchar2(3000); --动态sql

   begin

   v_SourceTb1 := '(select '   FieldStr   ' from '   TbName   ') SourceTb1';

   v_SourceTb2 := '(select * from '   v_SourceTb1   ' where '   RowFilter   ' '   SortStr   ') SourceTb2';

   v_SourceTb3 := '(select rownum as Rowindex,SourceTb2.* from '   v_SourceTb2   ' where rownum<='   MaxRowNum   ') SourceTb3';

   v_SourceTb4 := '(select * from '   v_SourceTb1   ' where '   RowFilter   ') SourceTb4';

   v_sql := 'select count(*) as TotalCount from '   v_SourceTb4;

   execute immediate v_sql into v_TotalCount;

   TotalCount := v_TotalCount;

   v_sql := 'select * from '   v_SourceTb3   ' where RowIndex >='  MinRowNum;

   open Cur_ReturnCur for v_sql;

   end Per_QuickPage;

  END MaterialManage;  

  由于oracle有个rownum特性,所以分页的时候就是利用rownum来实现。如果大家还有什么更好的办法记得告诉我一声,多谢了,因为我测试了上面的分页方法效率并不是很高。  

  存储过程返回了两个参数:TotalCount :当前条件下的总记录数 Cur_ReturnCur :游标类型,就是所要读取的记录的集合
 
  下面是ASP.NET中调用的代码:  

  ///

  /// 调用存储过程实现快速分页

  ///


  /// 表名称

  /// 字段名称

  /// 过滤条件

  /// 排序字段

  /// 分页小值

  /// 分页大值

  /// 总记录(需要返回)

  /// DataTable

  public DataTable QuickPage(string TbName,string FieldStr,string RowFilter,string SortStr,int MinRowNum,int MaxRowNum,ref int RecordCount)

  {

   OracleConnection conn = new OracleConnection(ConfigurationSettings.AppSettings["OracleConnstr"].ToString());

   OracleCommand cmd = new OracleCommand();

   cmd.Connection = conn;

   cmd.CommandText = "MaterialManage.Per_QuickPage";

   cmd.CommandType = CommandType.StoredProcedure;
上一页 [1] [2] 下一页
评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
 热点文章
·惊爆!《暗黑破坏神3》将对应全平台
·《荣誉勋章:太平洋之战》中文版上市
·MediaShow魅力四射快速制作音乐电子相册
·《花木兰》完美流程攻略
·轻松可爱 最新10大Q版网络游戏推荐
·2006年暑期新宣布免费网络游戏一览
·photoshop制作水晶球中的精灵
·NVIDIA发布Forceware 93.71 WHQL驱动
·经验分享 微软Word2007实用技巧两则
·国内新记录产生 1M super pi运算仅用9秒
 推荐文章
·微软高官爆料:欧盟对Vista哪些功能不安
·在Google Talk上与QQ、MSN好友聊天
·Word使用过程中的常见问题及其解决
·手把手教你内存终极变相“造假”大法
·NVIDIA联手海盗船 推出自动超频内存
·Windows Vista特殊功能介绍:语音识别
·公安机关检验软件样本 流氓软件制造者面临坐牢危..
·比英特尔UMPC还要小 移动PC新品推出
·性感暴力完美结合 御姐武戏X新画面
·盖茨访谈:我就是微软里的兼职员工
WinXP下载基地 版权所有 Copyright© 2006-2008 WWW.WinXpd.COM, All Rights Reserved. 页面维护: WinXP下载基地(WinXP基D)