C # Oracle выполняет хранимую процедуру с выходным параметром - PullRequest
1 голос
/ 27 июня 2011

Положение:
Я пытаюсь запустить хранимую процедуру с выходным параметром, который мне нужно перехватить.
Я использую 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();
}

Любая помощь очень приветствуется:)

Редактировать: некоторый код ниже в комментарии, но до сих пор не получил меня: (

Привет

1 Ответ

2 голосов
/ 27 июня 2011

Я нашел источник проблем ... одна из таблиц, в которой использовалась процедура, была заблокирована.

...