Подскажите как правильно вызвать хранимую ФУНКЦИЮ из oracle.
Использую оракловый ODP.NET не от MS.
Есть:
CREATE OR REPLACE function my_func(i in integer) return integer as
res integer;
begin
res := i + 1;
return res;
end;
и
CREATE OR REPLACE procedure my_proc(i in integer, r out integer)
as
begin
r := i + 1;
end;
Код:
OracleConnection con = new OracleConnection(connectionString);
con.Open();
OracleCommand command = con.CreateCommand();
command.CommandText = "my_proc";
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("p", OracleDbType.Int32, System.Data.ParameterDirection.Input)).Value = 1;
command.Parameters.Add(new OracleParameter("r", OracleDbType.Int32, System.Data.ParameterDirection.Output));
command.ExecuteNonQuery();
так выполняется нормально, но если попытаться вызвать функцию результат 0.
При вызове функции код меняю на:
...
command.CommandText = "my_func";
...
command.Parameters.Add(new OracleParameter("r", OracleDbType.Int32, System.Data.ParameterDirection.ReturnValue));
...
Как правильно вызывать функцию?
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, Аноним, Вы писали:
А>>Как правильно вызывать функцию?
MC>Вы уже сами ответили на свой вопрос. Output — это out — параметр. ReturnValue — это результат возвращаемый функцией.
Так в том то и дело, что это не работает

Т.е. никакой реакции в коде нет результирующий параметр всегда = 0.
Я написал этот чтобы показать, что я это уже пробовал.
И в доке по ODP.Net тоже ничего не могу найти.
Здравствуйте, Mr.Cat, Вы писали:
MC>Попробуйте добавлять параметр-ReturnValue первым в список.
Да уж, что то даже в голову такое не пришло.
Работает

Спасибо