.net之oraclecommand访问oracle

 

     本文讨论了如何使用 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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-703292/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-703292/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值