为什么用C#调用过程时会出现Oracle错误
本文关键字:Oracle 错误 调用 过程 为什么 | 更新日期: 2023-09-27 18:00:32
我在Oracle11g:中编写了这个过程
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行
发生了什么?为什么我会出现这个错误?
ORA-06512
表示过程中存在未处理的异常。您的代码中没有错误处理,所以这是合理的。
当然,因为你没有错误处理,所以任何人都很难知道错误是什么。最有可能的是数据:要么你在A1 where ID=1
中没有记录(即no_data_FOUND异常),要么你有多个这样的记录(即TOO_MANY_ROWS异常)。
ODP有一个处理异常的类。了解更多信息。