正 文

.NET访问Oracle数据库相关


www.7dspace.com  更新日期:2005-11-11 7:39:53  七度空间


  5。访问 Oracle 过程/函数 (2)

  不返回记录集(没有 SELECT 输出)的过程/函数,调用起来和 SQL Server 较为类似。但如果想通过过程/函数返回记录集,在 Oracle 中就比较麻烦一些了。

  在 SQL Server 中,如下的存储过程:

  CREATE PROCEDURE GetCategoryBooks

  (

  @CategoryID int

  )

  AS

  SELECT * FROM Books

  WHERE CategoryID = @CategoryID

  GO

  在 Oracle 中,请按以下步骤操作:

  (1)创建一个包,含有一个游标类型:(一个数据库中只需作一次)

  CREATE OR REPLACE PACKAGE Test

  AS

  TYPE Test_CURSOR IS REF CURSOR;

  END Test;

  (2)过程:

  CREATE OR REPLACE PROCEDURE GetCategoryBooks

  (

  p_CURSOR out Test.Test_CURSOR, -- 这里是上面包中的类型,输出参数

  p_CatogoryID INTEGER

  )

  AS

  BEGIN

  OPEN p_CURSOR FOR

  SELECT * FROM Books

  WHERE CategoryID=p_CatogoryID;

  END GetCategoryBooks;

  (3).NET 程序中:

  OracleParameters parameters = {

  new OracleParameter("p_CURSOR", OracleType.CURSOR, 2000, ParameterDirection.Output, true, 0, 0, "",

  DataRowVersion.Default, Convert.DBNull),

  new OracleParameter("p_CatogoryID", OracleType.Int32)

  };

  parameters[1].Value = 22;

  OracleConnection connection = new OracleConnection( ConnectionString );

  OracleCommand command = new OracleCommand("GetCategoryBooks", connection);

  command.CommandType = CommandType.StoredProcedure;

  foreach(OracleParameter parameter in parameters)

  command.Parameters.Add( parameter );

  connection.Open();

  OracleDataReader dr = command.ExecuteReader();

  while(dr.Read())

  {

  // 你的具体操作。这个就不需要我教吧?

  }

  connection.Close();

  另外有一点需要指出的是,如果使用 DataReader 取得了一个记录集,那么在 DataReader 关闭之前,程序无法访问输出参数和返回值的数据。

  好了,先这些,总之 .NET 访问 Oracle 还是有很多地方和 SQL Server 不同的,慢慢学习了。

4页,页码:[1] [2] [3] [4] 

上一篇:怎样Oracle中导入文本数据?
下一篇:SQL Server数据表的信息
作者:破宝(percyboy)  来源:博客堂 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐