我试图在C#中调用oracle函数但是无法弄清楚为什么我一直在输入类型或参数错误。任何帮助,将不胜感激。我已经验证了参考数据类型,并且已经习惯了我的理解。
FUNCTION VALIDATE_DIFF_PCT_HIER(
O_error_message IN OUT RTK_ERRORS.RTK_TEXT%TYPE,
I_record_exists IN BOOLEAN,
I_each_diff_pct_x_100 IN TVC_PMT_DIFF_PCT_HIER.EACH_DIFF_PCT%TYPE,
I_case_diff_pct_x_100 IN TVC_PMT_DIFF_PCT_HIER.CASE_DIFF_PCT%TYPE,
I_pallet_diff_pct_x_100 IN TVC_PMT_DIFF_PCT_HIER.PALLET_DIFF_PCT%TYPE,
I_dept IN DEPS.DEPT%TYPE,
I_class IN CLASS.CLASS%TYPE,
I_subclass IN SUBCLASS.SUBCLASS%TYPE)
C#代码。
cmd.Parameters.Add("O_error_message", OracleDbType.Varchar2, ParameterDirection.InputOutput).Value = string.Empty;
cmd.Parameters.Add("I_record_exists", OracleDbType.Char, ParameterDirection.Input).Value = "1";
cmd.Parameters.Add("I_each_diff_pct_x_100", OracleDbType.Double, ParameterDirection.Input).Value = 0.04;
cmd.Parameters.Add("I_case_diff_pct_x_100", OracleDbType.Double, ParameterDirection.Input).Value = -0.1;
cmd.Parameters.Add("I_pallet_diff_pct_x_100", OracleDbType.Double, ParameterDirection.Input).Value = -0.1;
cmd.Parameters.Add("I_dept", OracleDbType.Int32, ParameterDirection.Input).Value = row.DeptId;
cmd.Parameters.Add("I_class", OracleDbType.Int32, ParameterDirection.Input).Value = row.ClassId;
cmd.Parameters.Add("I_subclass", OracleDbType.Int32, ParameterDirection.Input).Value = row.SubClassId;
cmd.Parameters.Add("Return_Value", OracleDbType.Char, ParameterDirection.ReturnValue);
conn.Open();
cmd.ExecuteNonQuery();