2016-10-25 2 views
0

При выполнении функции oracle из C# мы получаем эту ошибку. , пожалуйста, помогите решить.вызов функции oracle из 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

ли функция name действительно 'list_without_dublicates', а не' list_without_duplicates'? –

+0

@GordonLinoff только его 'list_without_dublicates' – Sachu

+0

Можете ли вы опубликовать свое тело функции? – Rahul

ответ

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; 
+0

@Wernfriend спасибо за ур ответ .. он также дал мне ту же ошибку..так, я назвал funcation с select functionname из dual, и это сработало..им upvoting ur answer – Sachu

Смежные вопросы