使用ODP.NET的Enterprise Library 5.0导致ORA-06502错误

时间:2013-04-16 14:45:38

标签: vb.net oracle enterprise-library odp.net

在使用添加了EntLibContrib.Data.OdpNet的Enterprise Library 5.0时,我遇到了一个奇怪的错误。

当我尝试运行包时,我收到ORA-06502错误。当我尝试使用标准ODP.NET运行包并使用OracleDataTypes而不是通用DbTypes时,它工作正常。

我尝试将Number参数转换为DbType.Decimal,将Varchar2转换为DbType.String。我还尝试过VarNumeric(显然无法转换)和AnsiString。我一直没能让包运行。

这是包裹的签名:

procedure process_Something(
    o_param1            OUT VARCHAR2,   
    o_param2            OUT VARCHAR2,   
    in_ID1              IN  NUMBER,     
    in_ID2              IN  NUMBER,     
    in_UNIQUE1          IN  VARCHAR2,   
    in_STR_PARAM1       IN  VARCHAR2,
    in_STR_PARAM2       IN  VARCHAR2,
    in_STR_PARAM3       IN  VARCHAR2,
    in_STR_PARAM4       IN  VARCHAR2,
    in_STR_PARAM5       IN  VARCHAR2,
    in_NUM_PARAM        IN  NUMBER,     
    in_STR_PARAM6       IN  VARCHAR2,
    in_STR_PARAM7       IN  VARCHAR2,
    in_STR_PARAM8       IN  VARCHAR2,
    in_STR_PARAM9       IN  VARCHAR2,
    in_STR_PARAM10      IN  VARCHAR2,
);

这是我用来调用它的代码。:

      var oComm = db.GetStoredProcCommand("APPS.MY_PACKAGE.process_Something");
      db.AddInParameter(oComm, "in_ID1", DbType.Decimal, int.Parse(item.ID1));
      db.AddInParameter(oComm, "in_ID2", DbType.Decimal, int.Parse(item.ID2));
      db.AddInParameter(oComm, "in_UNIQUE1", DbType.String, item.Unique1.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM1", DbType.String, item.STR_Param1.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM2", DbType.String, item.STR_Param2.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM3", DbType.String, item.STR_Param3.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM4", DbType.String, item.STR_Param4.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM5", DbType.String, item.STR_Param5.Trim());
      db.AddInParameter(oComm, "in_NUM_PARAM", DbType.Decimal, int.Parse(string.IsNullOrEmpty(item.NumParam.Trim()) ? "0" : item.NumParam));
      db.AddInParameter(oComm, "in_STR_PARAM6", DbType.String, item.STR_Param6.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM7", DbType.String, string.Empty);
      db.AddInParameter(oComm, "in_STR_PARAM8", DbType.String, item.STR_Param8.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM9", DbType.String, item.STR_Param9.Trim());
      db.AddInParameter(oComm, "in_STR_PARAM10", DbType.String, item.STR_Param10.Trim());
      db.AddOutParameter(oComm, "o_param1", DbType.String, 200);
      db.AddOutParameter(oComm, "o_param2", DbType.String, 200);
      db.ExecuteNonQuery(oComm);

0 个答案:

没有答案
相关问题