Stored procedures 执行存储过程后有时返回奇怪的值

Stored procedures 执行存储过程后有时返回奇怪的值,stored-procedures,spring-integration,spring-jdbc,Stored Procedures,Spring Integration,Spring Jdbc,上面的代码运行在高并发环境中,看起来工作正常,但有时会记录执行存储过程返回的非常奇怪的负载。例如“收到的结果为{error=D}”, Oracle SP未编码为返回值D,假定它大部分为空,或者根据具体情况返回一些错误消息。 有没有想过这个奇怪的值可能来自何处,或者如何找到它的底部?这肯定是来自于甲骨文 您的代码看起来不错,而且payload.toString()正是预期的Map样式。您确实有错误作为输出参数 所以,我不知道你为什么这么肯定Java有罪 您可以打开org.springframewo

上面的代码运行在高并发环境中,看起来工作正常,但有时会记录执行存储过程返回的非常奇怪的负载。例如“收到的结果为{error=D}”, Oracle SP未编码为返回值D,假定它大部分为空,或者根据具体情况返回一些错误消息。
有没有想过这个奇怪的值可能来自何处,或者如何找到它的底部?

这肯定是来自于甲骨文

您的代码看起来不错,而且
payload.toString()
正是预期的
Map
样式。您确实有
错误
作为
输出
参数

所以,我不知道你为什么这么肯定Java有罪


您可以打开
org.springframework.integration
和/或
org.springframework.jdbc
类别的调试登录级别,以扫描有关该问题的日志,以查找奇怪的行为。

谢谢Artem,我还没有看到在内部执行的代码,是否存在任何不可能是线程安全的并可能产生此结果的可能性?这里的难题是存储过程没有任何代码可以在error out参数中返回D值,这在目前是相当令人困惑的。我不知道有这样的线程安全漏洞。如果是这样的话,我们以前有很多问题。您的案例是唯一的,因此只有一个答案:您的存储过程。出于测试目的,我甚至可以建议将过程代码更改为非常简单的代码,甚至可能是静态的,然后看看类似的高级负载会发生什么。
<int-jdbc:stored-proc-outbound-gateway 
            data-source="myDataSource"
            request-channel="reqChannel" 
            reply-channel="resultChannel"
            stored-procedure-name="updateProcessStatus"
            ignore-column-meta-data="true">             
            <int-jdbc:sql-parameter-definition name="id" direction="IN"/>
            <int-jdbc:sql-parameter-definition name="status" direction="IN" type="NVARCHAR"/>
            <int-jdbc:sql-parameter-definition name="error" direction="OUT" type="NVARCHAR"/>
            <int-jdbc:parameter name="id" expression="payload.id"/>                 
            <int-jdbc:parameter name="status" expression="payload.status"/>                                                         
</int-jdbc:stored-proc-outbound-gateway>

 <int:logging-channel-adapter id="resultChannel" expression="'result receive is '+ payload " />