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