没有在 WSO2 ESB (DBLookup) 中获取 mysql 存储过程的参数 [英] Not getting out parameter of mysql Stored Procedure in WSO2 ESB (DBLookup)

查看:22
本文介绍了没有在 WSO2 ESB (DBLookup) 中获取 mysql 存储过程的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 mysql 中创建了一个 SP,它接受 6 个输入参数并给出 2 个输出参数.我想从数据库查找中调用它.我不知道该怎么做.我尝试了不同的 2 代码,但没有运气.请帮忙.

I have created a SP in mysql which takes 6 input parameters and give 2 output parameters. I want to call this from DB lookup. I don't know how to do that. I have tried different-2 codes but no luck. please help.

突触代码:

<dblookup>
   <connection>
       <pool>
          <driver>com.mysql.jdbc.Driver</driver>
          <property name="autocommit" value="false"/>
          <password>root</password>
           <user>root</user> 
           <url>jdbc:mysql://localhost:3308/emp</url>
        </pool>
    </connection>
    <statement>
      <sql>
        <![CDATA[call MANAGE_MANAGER_DETAIL(?,?,?,?,?,?,@RESULT_CODE, @RESULT_DESC)]]>
      </sql>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
      <parameter expression="synapse:get-property('RequestNumber')" type="VARCHAR"/>
    </statement>
    <statement>
      <sql>
           <![CDATA[SELECT @RESULT_CODE, @RESULT_DESC)]]>
       </sql>                   
       <result name="RESULT_CODE" column="RESULT_CODE"/>
       <result name="RESULT_DESC" column="RESULT_DESC"/>
    </statement>
</dblookup>

日志:

[2015-11-19 13:38:23,668] DEBUG - DBLookupMediator Setting as parameter : 6 value : 1 as JDBC Type : 12(see java.sql.Typepes)
[2015-11-19 13:38:23,669] DEBUG - DBLookupMediator Successfully prepared  
statement :call MANAGE_MANAGER_DETAIL(?,?,?,?,?,?,@RESULT_CODE, @RESULT_DESC)
against DataSource : jdbc:mysql://localhost:3308/emp=[2015-11-19 13:38:23,679]     
ERROR - DBLookupMediator Error executing statement :
call MANAGE_MANAGER_DETAIL(?,?,?,?,?,?,@RESULT_CODE, @RESULT_DESC) against     
DataSource : jdbc:mysql://localhost:3308/emp
java.sql.SQLException: ResultSet is from UPDATE. No Data. at com.mysql.jdbc.ResultSet.next(ResultSet.java:6129)
at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207

推荐答案

我认为 DBLookup 不支持您放置参数的方式.

I think that DBLookup does not support output parameters in the way you put them.

尝试得到这样的输出

<statement>
     <sql>call getCompany(?)</sql>
     <parameter expression="//m0:getQuote/m0:request/m0:symbol"
                           xmlns:m0="http://services.samples" type="VARCHAR"/>
     <result name="company_id" column="id"/>
</statement>

查看链接以获取完整的样本.

这篇关于没有在 WSO2 ESB (DBLookup) 中获取 mysql 存储过程的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆