Положение:
Я пытаюсь запустить хранимую процедуру с выходным параметром, который мне нужно перехватить.
Я использую C # 3.5 и OracleClient с OleDbConnection.
Исследование:
Я искал другие пути, но, насколько я могу судить, я делаю это правильно. Поддержка Microsoft и различные другие форумы.
Проблема:
Когда я выполняю cmd.ExecuteNonQuery (), он просто застревает. Нет ошибок или чего-то еще, он просто останавливается там и держит поток.
Когда я пытаюсь использовать OleDbDataReader или Scalar, ничего лучше.
Если я изменяю CommandText (удаляем имя пакета), он выдает ошибку, что не может найти хранимую процедуру, поэтому я знаю, что это как минимум правильно.
Код:
Oracle:
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();
}
Любая помощь очень приветствуется:)
Редактировать: некоторый код ниже в комментарии, но до сих пор не получил меня: (
Привет