У меня есть простая функция оракула, как показано ниже
create or replace function get_area(
mem_id IN VARCHAR2,
P_date DATE DEFAULT SYSDATE)
RETURN NUMBER
IS
v_area_id NUMBER;
BEGIN
v_area_id := 0;
RETURN v_area_id ;
end;
(это функция тестирования, поэтому просто присваиваем 0 и возвращаем обратно переменную)
Мы вызываем то же самое в C #, как показано ниже
ora_con.Open();
OracleCommand cmd = ora_con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = ora_con;
cmd.CommandText = "schema.get_area";
OracleParameter mem_id = new OracleParameter();
mem_id.OracleDbType = OracleDbType.Varchar2;
mem_id.Direction = ParameterDirection.Input;
mem_id.Value = m_id1;
OracleParameter P_date = new OracleParameter();
P_date.OracleDbType = OracleDbType.Date;
P_date.Direction = ParameterDirection.Input;
P_date.Value = DateTime.Now;
OracleParameter v_area_id = new OracleParameter();
v_area_id.OracleDbType = OracleDbType.Int64;
v_area_id.Direction = ParameterDirection.ReturnValue;
v_area_id.Size = 1000;
cmd.Parameters.Add(mem_id);
cmd.Parameters.Add(P_date);
cmd.Parameters.Add(v_area_id);
cmd.ExecuteNonQuery();
area_id = Convert.ToInt64(cmd.Parameters["v_area_id"].Value);
при выполнении того же самого, получая следующую ошибку
ORA-06550: строка 1, столбец 15: PLS-00306: неверный номер или типы аргументов в вызове 'GET_AREA 'ORA-06550: строка 1, столбец 7: PL / SQL: оператор игнорируется