Вызов функции оракула из C# дает ошибку

При выполнении функции оракула из C# мы получаем эту ошибку. пожалуйста помогите решить.

ORA-06550: строка 1, столбец 15:

PLS-00306: неверный номер или типы аргументов при вызове 'LIST_WITHOUT_DUBLICATES'

ORA-06550: строка 1, колонка 7:

PL / SQL: оператор игнорируется

Мой код C#

comm.Connection = conn;
comm.CommandText = "LIVE.list_without_dublicates";
comm.CommandType = CommandType.StoredProcedure;

 comm.Parameters.Add("p_str", to_list);
comm.Parameters.Add("p_sep", ",");
comm.Parameters.Add("result", OracleDbType.Varchar2);
 comm.Parameters["result"].Direction = ParameterDirection.ReturnValue;

comm.ExecuteNonQuery();

Подпись функции

LIVE.list_without_dublicates(
p_str IN VARCHAR2,
p_sep IN VARCHAR2 DEFAULT ',')
RETURN VARCHAR2

1 ответ

Насколько я помню, вы должны указать (максимальную) длину Varchar2 когда это возвращаемое значение.

Попробуй это:

comm.Parameters.Add("result", OracleDbType.Varchar2, 4000, null, ParameterDirection.ReturnValue);

вместо

comm.Parameters.Add("result", OracleDbType.Varchar2);
comm.Parameters["result"].Direction = ParameterDirection.ReturnValue;

Также попробуйте

comm.CommandText = "BEGIN :result := LIVE.list_without_dublicates(:p_str, :p_sep); END;";
comm.CommandType = CommandType.Text;

вместо

comm.CommandText = "LIVE.list_without_dublicates";
comm.CommandType = CommandType.StoredProcedure;
Другие вопросы по тегам