在 SOA 10g 和 SOA 12c 中调用存储过程导致不同的结果

Calling stored procedure leads to different results in SOA 10g and SOA 12c

我正在将 BPEL 流程从 SOA 10g 移植到 SOA 12c。

我配置了一个 DBAdapter 来调用相同的存储过程,具有相同的输入负载。

问题是在 SOA 10g 上一切正常,过程 returns 作为自定义输出错误代码 0 和 "OK" 作为消息。 相反,在 SOA 12c 中,该过程在某个时刻中断并且 returns 错误代码 -1722 和 "Invalid number" 作为消息(这肯定是对 ORA-01722 数据库错误的内部处理) . 我无法调试存储过程以查看它在哪一行中断。

我的问题是:哪个 "low-level" 参数会对此产生影响?这是我到目前为止的想法列表和我已经完成的检查:

我猜想在某些时候编码中存在一个问题,它将奇怪的数据从 WebLogic 发送到数据库。我刚刚启用了所使用的 DbAdapter 特定连接池的日志,我会尽快用相关信息更新问题(我必须等待实例启动,我无法自己启动它们)。

我猜这是一个 NLS 问题(根据我的经验,大多数 ORA-01722 结果都与 NLS 相关)。

您应该检查的事项:

  • 您是否在两个 Oracle 实例上使用相同的 NLS 设置?
  • 您是否在两个客户端/DBAdapter 上使用相同的 NLS 设置?
  • 您的输入中是否有浮点数(例如“12.1”- 这将很高兴地使用英语 NLS 设置进行解析,但如果您使用德语设置则引发 ORA-01722)