вызов хранимых функции из oracle
От: Аноним  
Дата: 22.07.08 13:51
Оценка:
Подскажите как правильно вызвать хранимую ФУНКЦИЮ из 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));
...


Как правильно вызывать функцию?
Re: вызов хранимых функции из oracle
От: Mr.Cat  
Дата: 22.07.08 14:23
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Как правильно вызывать функцию?

Вы уже сами ответили на свой вопрос. Output — это out — параметр. ReturnValue — это результат возвращаемый функцией.
Re[2]: вызов хранимых функции из oracle
От: Аноним  
Дата: 22.07.08 14:44
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, Аноним, Вы писали:

А>>Как правильно вызывать функцию?

MC>Вы уже сами ответили на свой вопрос. Output — это out — параметр. ReturnValue — это результат возвращаемый функцией.


Так в том то и дело, что это не работает Т.е. никакой реакции в коде нет результирующий параметр всегда = 0.
Я написал этот чтобы показать, что я это уже пробовал.
И в доке по ODP.Net тоже ничего не могу найти.
Re[3]: вызов хранимых функции из oracle
От: Mr.Cat  
Дата: 22.07.08 17:06
Оценка:
Попробуйте добавлять параметр-ReturnValue первым в список.
Re[4]: вызов хранимых функции из oracle
От: Аноним  
Дата: 22.07.08 17:44
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Попробуйте добавлять параметр-ReturnValue первым в список.


Да уж, что то даже в голову такое не пришло.
Работает Спасибо
Re[5]: вызов хранимых функции из oracle
От: Mr.Cat  
Дата: 22.07.08 21:33
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Да уж, что то даже в голову такое не пришло.

Угу, довольно забавная странность. Наверняка, в доках по ODP.NET ей посвящена максимум одна строчка. Хотя следовало бы это написать на всю страницу, большими красными буквами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.