• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
用ADO.NET访问Oracle9i存储过程(上)
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
用ADO.NET访问Oracle9i存储过程(上)
软件发布 用ADO.NET访问Oracle9i存储过程(上)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 认证考试 | Oracle认证 | Oracle指导 | 用ADO.NET访问Oracle9i存储过程(上)

用ADO.NET访问Oracle9i存储过程(上)

 

添加时间: 2008-4-26 1:41:30  作者: Oracle指导  阅读次数:36   来源: http://www.d9soft.com

 

 

       

本文讨论了如何使用 ADO.NET 访问 Oracle 存储过程(称为 SQL 编程块)和函数(返回单个值的编程块)。
您可以使用以下托管数据提供程序连接到 Oracle 数据库:Microsoft .NET Oracle 提供程序、OLE DB .NET 提供程序、ODBC .NET 数据提供程序以及 Oracle 的 ODP.NET 提供程序。本文使用用于 Oracle 的 Microsoft?.NET 框架数据提供程序。使用 Oracle ODP.NET 数据提供程序或用于 OLE DB 的 Microsoft .NET 框架数据提供程序时可使用不同的功能。
Oracle .NET 数据提供程序随 .NET 框架 1.1 一起提供。如果您使用的是 .NET 框架 1.0,您将需要下载 .NET Managed Provider for Oracle。无论是哪个版本,数据提供程序类都位于 System.Data.OracleClient 命名空间中。
概述
PL/SQL 是 SQL 的 Oracle 实现。它与 Microsoft?SQL Server? 所使用的 T-SQL 类似,但也有一些不同之处,本文稍后对此进行了详细讨论。与 T-SQL 一样,PL/SQL 扩展了标准 SQL。PL/SQL 用于定义命名编程块,如存储过程、函数和触发器。
类
可使用 System.Data.OracleClient 命名空间中类的子集来执行 Oracle 存储过程和函数。下表对这些类进行了说明:
类 说明 
OracleCommand
 针对 Oracle 数据库执行的存储过程的 SQL 语句。
 
OracleConnection
 打开的数据库连接。
 
OracleParameter
 OracleCommand 的参数,也可能是它到 DataColumn 的映射。
 
OracleParameterCollection
 OracleParameter 对象的集合。
 
OracleType
 Oracle 数据类型和结构的枚举。
 
 
执行存储过程
执行 Oracle 存储过程与执行 SQL Server 存储过程类似。下面的步骤说明了如何执行 Oracle 存储过程和检索它返回的结果。 
1.
 在 HR 架构中创建一个名为 COUNT_JOB_HISTORY 的存储过程,以计算 JOB_HISTORY 表中的记录数。 
CREATE OR new PROCEDURE COUNT_JOB_HISTORY
(
    reccount OUT NUMBER
)
IS
BEGIN
    SELECT COUNT(*) INTO reccount
    FROM JOB_HISTORY;
END COUNT_JOB_HISTORY;
HR 架构是默认 Oracle 安装中包含的一个示例。 
 
2.
 将 System.Data.OracleClient.dll(用于 Oracle 的 Microsoft .NET 框架数据提供程序)的引用添加到项目中。 
 
3.
 使用 using 指令导入 OracleClient 类中的类型。 
using System.Data.OracleClient;


4.
 创建一个 OracleConnection 对象。 
OracleConnection conn = new OracleConnection("Data Source=oracledb;
    User Id=UserID;Password=Password;");
用您的值替换 Oracle 数据库的名称、用户名和密码。 
 
5.
 创建一个 OracleCommand 对象。将其 Connection 属性设置为第 4 步中创建的连接。将其 CommandText 设置为存储过程的名称,并将其 CommandText 属性设置为 CommandType.StoredProcedure。当您调用第 8 步中介绍的一个 Execute() 方法时,该命令对象将执行指定的存储过程。 
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "COUNT_JOB_HISTORY";
cmd.CommandType = CommandType.StoredProcedure;
如果您的存储过程名称含有特殊字符,您就必须使用转义序列。您可以通过重置 CommandText 属性来重用现有的 OracleCommand 对象。
 
6.
 创建输入、输出和返回值的 OracleParameter 对象,并将其添加到 OracleCommand 对象的参数集合中。 
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
    ParameterDirection.Output;
该行代码是以下两行代码的简写形式: 
cmd.Parameters.Add("reccount", OracleType.Number);
cmd.Parameters["reccount"].Direction = ParameterDirection.Output;
 
7.
 如果您要检索结果集,请创建 DataSet、DataTable 或 DataReader。在本示例中,我们只是获取第 6 步中创建的输出参数中的计数。 
 
8.
 使用 OracleCommand 对象的一个 Execute 方法打开连接并执行存储过程,如下所示:
方法 说明 
ExecuteReader
 通过执行能够返回结果集的存储过程生成 OracleDataReader。
 
ExecuteNonQuery
 执行不返回结果集的查询或过程,返回受影响的行数。
 
ExecuteOracleNonQuery
 执行查询,返回受影响的行数。
该方法还使用 OracleString 参数来返回 UPDATE、INSERT 或 DELETE 查询所修改的最后一行的行 ID。
 
ExecuteScalar
 执行一个查询或过程,并且返回查询或过程的返回值,或者将结果集第一行第一列的值作为 .NET 框架数据类型返回。
 
ExecuteOracleScalar
 执行一个查询或过程,并且返回查询或过程的返回值,或者将结果集第一行第一列的值作为 OracleType 数据类型返回。

使用完连接后,不要忘记将其关闭。 
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
如果您要使用 DataAdapter 来填充 DataTable 或 DataSet,可以依靠 DataAdapter 来打开和关闭连接。
 
9.
 处理结果。在我们的示例中,可在显示到控制台的输出参数中得到记录数: 
Console.WriteLine(cmd.Parameters["reccount"].Value);
 
下面是在本示例中开发的用于执行存储过程和检索结果的代码:
OracleConnection conn = new OracleConnection("Data Source=oracledb;
    User Id=UserID;Password=Password;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "COUNT_JOB_HISTORY";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
    ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Console.WriteLine(cmd.Parameters["reccount"].Value);
不返回数据的存储过程
OracleCommand 类的 ExecuteOracleNonQuery() 方法用于执行不返回任何行的 SQL 语句或存储过程。该方法返回一个 int 值,表示受 UPDATE、INSERT 和 DELETE 命令影响的行数;如果没有任何行受到影响,则返回 -1。如果您所执行的 INSERT、DELETE 或 UPDATE 语句恰好影响一行,则该方法具有单个参数 OracleString out rowid,该参数唯一标识 Oracle 数据库中受影响的行。可以使用该值来优化后续相关查询。
还可以使用 OracleCommand 类的 ExecuteNonQuery() 方法来执行不返回数据的存储过程,但您将无法获得上面介绍的唯一行标识符。
尽管上述命令都不会返回任何数据,但映射到参数的输出参数和返回值仍然使用数据进行填充。这使您可以使用上述任一命令从存储过程返回一个或多个标量值。
以下 Oracle 存储过程删除了由单个输入参数指定的员工的所有工作经历,并且不返回任何数据。
CREATE OR new PROCEDURE DELETE_JOB_HISTORY
(
    p_employee_id NUMBER
)
IS
BEGIN
    DELETE FROM job_history
    WHERE employee_id = p_employee_id;
END DELETE_JOB_HISTORY;

 

用ADO.NET访问Oracle9i存储过程(上)(1) 第 [1] [2] [3]  下一页

 

 

上下文章:

 

上一篇文章: Oracle冷备份的不完全恢复(下) 下一篇文章: 用ADO.NET访问Oracle9i存储过程(下)

相关文章:

  • 访问统计上的陷阱,值得站长的你我他关注
  • 在ORACLE的存储过程中如何做简单的动态查询
  • Oracle开发人员JAVA存储过程
  • oracle+jsp中blob存储大文本
  • 编写一个接受变量的存储过程

相关软件:

  • 刷网页访问量工具 V1.3
  • 网络存储服务器 V2.0
  • 操作系统 -- 安装过程详细图解 一步步教你(图片)从98版到Linux
  • 全面质量管理过程控制系统 V2.2
  • PHP+MYSQL访问统计系统
  • 风雨飘然访问统计系统(PHP版)

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 实例:Oracle导出EXCEL文件
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 在ORACLE的存储过程中如何做简单的...
  • 实例:Oracle导出EXCEL文件
  • AIX下自动启动Oracle数据库与监听...
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有