Chinaunix首页 | 论坛 | 博客
  • 博客访问: 743779
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:37:40

  本文讨论了如何使用 ADO.NET访问 过程(称为 SQL 编程块)和函数(返回单个值的编程块)。

  您可以使用以下托管数据提供程序连接到 数据库: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;

[1]    

【责编:Luzi】

--------------------next---------------------

阅读(405) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~