【问题标题】:Oracle data access output parameter mixed upOracle 数据访问输出参数混淆
【发布时间】: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


【解决方案1】:

所有参数的添加顺序必须与 ORACLE 存储过程中定义的顺序相同

其中一个输入参数被乱序添加,导致混乱。

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 2017-03-11
    • 2013-05-23
    • 2015-02-12
    • 2017-04-15
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多