我正在调用一个包含15个输入参数和4个输出参数的Oracle存储过程。输出参数设置如下:
OracleParameter p_errn = cmd.Parameters.Add("pErrCode", OracleDbType.Decimal, 10);
p_errn.Direction = ParameterDirection.Output;
OracleParameter p_errm = cmd.Parameters.Add("pErrMsg", OracleDbType.Varchar2, 1000);
p_errm.Direction = ParameterDirection.Output;
OracleParameter pStatus = cmd.Parameters.Add("pStatus", OracleDbType.Decimal, 10);
pStatus.Direction = ParameterDirection.Output;
OracleParameter pID = cmd.Parameters.Add("pID", OracleDbType.Varchar2, 1000);
pID.Direction = ParameterDirection.Output;
过程i成功执行,但输出参数值混淆。应该在pId中的值在pStatus中,应该在pStatu中的值是在pErrMsg中,依此类推
我还试图通过从参数集合获取值:
cmd.Parameters["pErrMsg"].Value.ToString()
但情况是一样的。
我检查了存储过程,一切似乎都很好。所有输出参数设置正确。
有人有类似的问题或暗示是什么导致了这种行为?
所有参数的添加顺序必须与在ORACLE上的存储过程中定义的顺序相同。
其中一个输入参数被无序添加,这导致了混乱。