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

本文关键字:出错 错误 函数 oracle 调用 | 更新日期: 2023-09-27 18:14:44

当从c#执行oracle函数时,我们得到这个错误。请帮忙解决。

ORA-06550:第一行,第15列:

PLS-00306:呼叫中错误的号码或参数类型"LIST_WITHOUT_DUBLICATES"

ORA-06550:第一行,第7列:

PL/SQL: Statement ignored

My c# code

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

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

据我所知,您必须在返回值时指定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;
相关文章: