我在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行
发生什么事了?为什么我会收到这个错误?
答案 0 :(得分:1)
ORA-06512
表示您的过程中出现未处理的异常。您的代码中没有错误处理,因此这是合理的。
当然,因为你没有错误处理,所以任何人都很难知道错误是什么。最有可能的是数据:您在A1 where ID=1
中没有记录(即NO_DATA_FOUND异常),或者您有多个此类记录(即TOO_MANY_ROWS异常)。
ODP有一个处理异常的类。 Find out more