从c#调用oracle函数给出错误

时间:2016-10-25 11:41:43

标签: c# oracle oracle10g

从C#执行oracle函数时,我们收到此错误。 请帮忙解决。

  

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 个答案:

答案 0 :(得分: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;