【发布时间】:2020-04-17 11:48:21
【问题描述】:
我正在调用一个包含 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;
程序成功执行,但输出参数值混淆。 pId 中应该有的值在 pStatus 中,pStatus 中应该有的值在 pErrMsg 中等等。
我也尝试通过从参数集合中获取值:
cmd.Parameters["pErrMsg"].Value.ToString()
但情况是一样的。
我检查了存储过程,一切似乎都很好。所有输出参数设置正确。
任何人有类似的问题或提示是什么导致了这种行为?
【问题讨论】:
-
检查您传递参数的顺序
-
我也查过了,顺序是一样的
-
您是否尝试在 DB 中执行相同的过程并获得正确的结果
-
是的,我做到了。我得到了正确的结果
-
参数的数据类型是否正确
标签: c# .net oracle stored-procedures output-parameter