情况:
我正在尝试运行一个具有输出参数的存储过程,我需要捕获它。
我使用C#3.5和带有OleDbConnection的OracleClient。
研究: 我一直在寻找其他方法,但据我所知,我做得对。 Microsoft support和其他各种论坛。
问题:
当我执行cmd.ExecuteNonQuery()时,它就会卡住。没有错误或任何东西,它只是停在那里并持有线程。
当我尝试使用OleDbDataReader或Scalar时,没有什么比这更好了。
如果我更改CommandText(删除包名称),则会出现无法找到存储过程的错误,因此我知道这至少是正确的。
代码:
甲骨文:
PROCEDURE deleteThemakaart
(an_seqthemakaart IN NUMBER, an_retval OUT NUMBER)
....
C#:
double InputValue = 777;
try
{
OleDbConnection con = new OleDbConnection(...);
con.Open();
OleDbCommand cmd = new OleDbCommand()
{
CommandText = "thema.pckg_themakaarten.deleteThemakaart",
Connection = con,
CommandType = CommandType.StoredProcedure,
};
OleDbParameter input = cmd.Parameters.Add("an_seqthemakaart", OleDbType.Double);
OleDbParameter output = cmd.Parameters.Add("an_retval", OleDbType.Double);
input.Direction = ParameterDirection.Input;
output.Direction = ParameterDirection.Output;
input.Value = InputValue;
cmd.ExecuteNonQuery();
return (double)output.Value;
}
catch (Exception ex)
{
...
}
finally
{
con.Close();
}
非常欢迎任何帮助:)
编辑:评论中有一些代码,但到目前为止还没有让我更进一步:(
问候
答案 0 :(得分:2)
我找到了麻烦制造者......程序使用的其中一个表被锁定了。