编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
通过.NET访问 Oracle数据库,时间:2005-01-10来源:不详长期以来,我一直用的是MSSQLServer/Access数据库,通过.NET访问MS自家的东西几乎没碰到过什么麻烦。最近项目中要用Oracle作为数据库,学习研究了一些.NET访问Oracle的东西,发现问题倒真的不少。1。System.Data.OracleClient和System.Data.OleDb命名空间虽然通,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> .NET 专区 >> NET 技术 >> 文章正文
【字体:
通过.NET访问 Oracle数据库   进入问吧

本站地址:http://www.bajiao123.com

作者:admin    文章来源:本站    点击数:    更新时间:2007-6-10    

通过.NET访问 Oracle数据库

过程,还可以使用函数。Oracle 的过程似乎是不能有返回值的,有返回值的就是函数了(这点有些像 BASIC,函数/过程区分的很细致。SQL Server 存储过程是可以有返回值的)。

.NET 访问 Oracle 过程/函数的方法很类似于 SQL Server,例如:

OracleParameter[] parameters = {
    new OracleParameter("ReturnValue", OracleType.Int32, 0, ParameterDirection.ReturnValue, true, 0, 0, "",
         DataRowVersion.Default, Convert.DBNull )
    new OracleParameter("参数1", OracleType.NVarChar, 10),
    new OracleParameter("参数2",  OracleType.DateTime),
    new OracleParameter("参数3",  OracleType.Number, 1)
};

parameters[1].Value = "test";
parameters[2].Value = DateTime.Now;
parameters[3].Value = 1;                        // 也可以是 new OracleNumber(1);

OracleConnection connection = new OracleConnection( ConnectionString );
OracleCommand command = new OracleCommand("函数/程名", connection);
command.CommandType = CommandType.StoredProcedure;

foreach(OracleParameter parameter in parameters)
     command.Parameters.Add( parameter );

connection.Open();
command.ExecuteNonQuery();
int returnValue = parameters[0].Value; //接收函数返回值
connection.Close();

  Parameter 的 DbType 设定请参见 System.Data.OracleClient.OracleType 枚举的文档,比如:Oracle 数据库中 Number 类型的参数的值可以用 .NET decimal 或 System.Data.OracleClient.OracleNumber 类型指定; Integer 类型的参数的值可以用 .NET int 或 OracleNumber 类型指定。等等。

  上面例子中已经看到函数返回值是用名为“ReturnValue”的参数指定的,该参数为 ParameterDirection.ReturnValue 的参数。

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, "",
   &

上一页  [1] [2] [3] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营