【问题标题】:Why do I get an Oracle error when calling a procedure with C#?为什么在使用 C# 调用过程时会出现 Oracle 错误?
【发布时间】:2015-07-01 05:41:36
【问题描述】:

我在 Oracle 11g 中编写了这个程序:

create or replace
PROCEDURE P1 
(
   ID_1 IN NUMBER   
  , P_NAME OUT VARCHAR2  
) AS 

  BEGIN
SELECT NAME_ into  p_name  FROM  A1 WHERE ID=ID_1; 
END P1;

我用 C# 编写了这段代码来调用该过程:

OracleConnection conn = new OracleConnection("User Id=webservice_access;Password=DAMAVAND;Server=ORA11;");
//OracleConnection conn = new OracleConnection("User Id=SYSTEM;Password=123456;Server=ORA11;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "P1";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("ID_1", 1);
cmd.Parameters.Add("p_name", OracleType.VarChar, 16).Direction = ParameterDirection.Output;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
Console.WriteLine(cmd.Parameters["p_name"].Value.ToString());
cmd.Connection.Close(); 

但是当我运行 C# 应用程序时,我得到了这个错误:

ORA-06512:在“WEBSERVICE_ACCESS.P1”,第 10 行
ORA-06512:在第 1 行

发生了什么?为什么会出现这个错误?

【问题讨论】:

  • 指出 line1 #10
  • @utility 什么?为了理解
  • 第 10 行? 1号线?只需编辑显示这些行的问题
  • 您是否尝试过在 SQL 工作表(SQL*Plus、TOAD 等)中运行该过程?会发生什么?
  • @APC 是的,我的朋友,我在 sql developer 上运行该程序,一切正常!并且工作,我在两台服务器上测试该代码,一个服务器工作,另一个不工作!

标签: c# oracle stored-procedures


【解决方案1】:

ORA-06512 表示您的过程中有未处理的异常。您的代码中没有错误处理,所以这是合理的。

当然,因为您没有错误处理,所以任何人都很难知道错误是什么。最有可能是数据:要么您在 A1 where ID=1 中没有记录(即 NO_DATA_FOUND 异常),要么您有多个此类记录(即 TOO_MANY_ROWS 异常)。

ODP 有一个用于处理异常的类。 Find out more.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2021-06-26
    • 1970-01-01
    • 2021-01-01
    • 2022-01-04
    • 2016-06-05
    • 2023-01-29
    相关资源
    最近更新 更多