学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Oracle >> 用.NET调用oracle存储过程返回记录集


用.NET调用oracle存储过程返回记录集


oracle的存储过程返回记录集,关键之处是要用游标。 关于数据库的游标(cursor)大家肯定都接触不少,我们可以通过OPEN,FETCH,CLOSE操作控制游标进行各种方便的操作,这方面的例子我就不在重复了。我们现在要介绍的是游标变量(cursor variable)。类似游标,游标变量也是指向一个查询结果集的当前行。不同的是,游标变量能为任何类型相似(type-compatible)的查询打开,而并不是绑定到某一个特定的查询。通过游标变量,你可以在数据库的数据提取中获得更多的方便。

首先是建立表:

  
  CREATE TABLE LIHUAN.BILL_POINTS 
  ( 
    POINTS_ID NUMBER(10,0) NOT NULL, 
    CUSTOMER_ID NUMBER(10,0) NOT NULL, 
    BILL_POINT_NO NUMBER(2,0) DEFAULT 1 NOT NULL, 
    CONSTRAINT PK_BILL_POINTS PRIMARY KEY (POINTS_ID) 
  ) 
  /
  

其次,建PACKAGE

  CREATE OR REPLACE PACKAGE LIHUAN.YY_PKG_BILL_POINT_NO/*取得用户的所有计费电序号*/ 
  IS 
  TYPE T_CURSOR IS REF CURSOR; 
  
    PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE, 
    Re_CURSOR OUT T_CURSOR); 
  END; 
  /
  

再次,建PACKAGE BODY

  CREATE OR REPLACE PACKAGE BODY LIHUAN.YY_PKG_BILL_POINT_NO/*取得用户的所有计费电序号*/ 
  IS 
  
  PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE, 
    Re_CURSOR OUT T_CURSOR) 
    IS 
    V_CURSOR T_CURSOR; 
    BEGIN 
     OPEN V_CURSOR FOR 
        select Bill_Point_No from BILL_POINTS where CUSTOMER_ID =P_CUSTOMER_ID; 
        Re_CURSOR := V_CURSOR; 
    END; 
  END; 
  /
  

最后,在.NET中程序调用。

  public DataSet Bill_Point_No(string CUSTOMER_ID)//ok 
   { 
    DataSet dataset = new DataSet(); 
    Hashtable HT=new Hashtable(); 
    HT.Add("P_CUSTOMER_ID",CUSTOMER_ID); 
    if(RunProcedure("Re_CURSOR",OracleType.Cursor,ref dataset,
HT,bmsOracleUser+".YY_PKG_BILL_POINT_NO.BILL_POINT_NO",
bmsOracleConnectionString)) 
    { 
    ; 
    } 
    else 
    { 
    dataset=null; 
    } 
    return dataset; 
   } 
  
  public bool RunProcedure(string ReturnParameter,
OracleType ParamType,ref DataSet Dataset,Hashtable HT ,
string ProcedureName,string OracleConnection) 
   { 
    System.Data.OracleClient.OracleConnection dsconnection = 
new System.Data.OracleClient.OracleConnection(OracleConnection); 
    System.Data.OracleClient.OracleCommand dacommand = 
new System.Data.OracleClient.OracleCommand(ProcedureName,dsconnection); 
    dsconnection.Open(); 
    dacommand.CommandType=CommandType.StoredProcedure; 
    IDictionaryEnumerator Enumerator; 
    Enumerator = HT.GetEnumerator(); 
    object Value=null; 
    OracleParameter OracleParam; 
    OracleParam = dacommand.Parameters.
Add(new OracleParameter(ReturnParameter,ParamType)); 
    OracleParam.Direction = ParameterDirection.Output; 
    while(Enumerator.MoveNext()) 
    { 
    Value = Enumerator.Value; 
    OracleParam=dacommand.Parameters.
Add(new OracleParameter
(Enumerator.Key.ToString(), Value)); 
    } 
    OracleDataAdapter ODAdapter=new OracleDataAdapter(dacommand); 
        try 
    { 
    ODAdapter.Fill(Dataset); 
     return true; 
    } 
    catch(System.Exception e) 
    { 
    e.ToString(); 
    return false; 
    } 
    finally 
    { 
    HT.Clear(); 
    dacommand.Parameters.Clear(); 
    dsconnection.Close(); 
    } 
  }
技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用.NET调用oracle存储过程返回记录集"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用.NET调用oracle存储过程返回记录集 相关内容
Google搜索中 用.NET调用oracle存储过程返回记录集 相关内容
雅虎中 用.NET调用oracle存储过程返回记录集 相关内容
Sogou搜索中 用.NET调用oracle存储过程返回记录集 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 用.NET调用oracle存储过程返回记录集相关文章
连接Oracle数据库及故障解决办法介绍 Oracle数据库中索引树的结构与块尺寸
在Oracle数据库中连接异种数据源 管理Oracle OLAP时清除通往OLAP的障碍
Oracle9i新特性之数据库监控系列详解 在Oracle/2000中调用Windows API函数
开发基于Oracle数据库的管理信息系统 Oracle数据库最大可用性体系结构
Oracle协作套件:完全集成数据库 Oracle使用新List分割方法提高灵活性
Oracle、IBM、BEA服务器测试和比较 构建用于位置信息开放标准的Portlet
关于Oracle数据库中的锁机制深入研究 关于Oracle和SQL存储调试和出错处理
Oracle数据库中临时表的深入研究 Oracle快速删除数据字典管理的表空间
借助Oracle存储过程实现定期分割表 Oracle归档模式的命令及参数说明
Oracle Spatial数据加密问题的研究 一个容易忽视的Oracle数据安全问题