任何人都可以提出这个函数调用有什么问题。没有返回变量的名称,不确定是否有任何问题。这在pl sql中正常工作。C#Oracle函数调用
oracle function code:
FUNCTION GETSTATUS (
p_param1 in varchar2,
p_param2 in number,
p_param3 out varchar2)
return boolean
is
return true;
END GETSTATUS;
ODP.Net版本 - 32位Oraclient10201_win32
C#代码
var cmd = new OracleCommand("tk_ccc.GETSTATUS ", connweb);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.Parameters.Add("Return_Value", OracleDbType.Char, 1, ParameterDirection.Output);
var prm1 = new OracleParameter("p_param1", OracleDbType.Varchar2, 20, ParameterDirection.Input) { Value = "1649983" };
cmd.Parameters.Add(prm1);
var prm2 = new OracleParameter("p_param2", OracleDbType.Int32, ParameterDirection.Input) { Value = 1 };
cmd.Parameters.Add(prm1);
var prm3 = new OracleParameter("p_param3", OracleDbType.Varchar2, 100, ParameterDirection.Output);
cmd.Parameters.Add(prm1);
var ret = cmd.ExecuteNonQuery();
错误消息:
ORA-06550:第1行,第7列:\ NPLS-00306:错误数量或类型的在调用 '的getStatus' \诺拉-06550参数:第1行,第7列:
PL/SQL:语句被忽略
由于最佳实践功能应只返回一个值,而不是输出参数和值。 Oracle仅在PL/SQL中具有布尔值。如果你的函数返回一个数字,它可能会工作。 – kevinsky
谢谢。但这是一个共享程序,我不能为我编辑。 –
为什么要添加一个名为''Return_Value'''的char参数? –