使用C#调用过程时,为什么会出现Oracle错误?

时间:2015-07-01 05:41:37

标签: c# oracle stored-procedures

我在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行

发生什么事了?为什么我会收到这个错误?

1 个答案:

答案 0 :(得分:1)

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

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

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