【问题标题】:Mule: Invoking an Oracle stored procedure which returns a table of custom typeMule:调用返回自定义类型表的 Oracle 存储过程
【发布时间】:2016-12-21 14:14:12
【问题描述】:

我正在使用 Mule CE 3.6.1。我有以下数据库连接器配置调用 Oracle 存储过程。

<db:stored-procedure config-ref="Oracle_Configuration" doc:name="Database">
    <db:parameterized-query><![CDATA[call get_phone_email(:userId, :tPhoneRecord)]]></db:parameterized-query>
    <db:in-param name="userId" type="NUMERIC" value="#[payload]" />
    <db:out-param name="tPhoneRecord" type="ARRAY" />
</db:stored-procedure>

参数 tPhoneRecord 在存储过程中定义为IS TABLE OF phone_email%ROWTYPE(即记录表)。我尝试指定参数类型ARRAY,但得到错误:

Message    : Invalid argument(s) in call (java.sql.SQLException). Message payload is of type Object[]
Code       : MULE_ERROR--2

我也尝试过使用其他输出参数类型或不指定类型但没有成功。

请让我知道我应该为 Oracle 记录表使用什么输出参数类型,或者我是否应该在 Java 中执行此操作。非常感谢。

【问题讨论】:

    标签: oracle stored-procedures mule


    【解决方案1】:

    out 参数可以使用下面的解决方案。

    <db:oracle-config name="Oracle_Configuration" url="jdbc:oracle:thin:@54.175.245.218:1581:xe" user="user" password="4321" >
        </db:oracle-config>
        <db:data-type name="INtypename" id="12"/>
        <!-- VARCHAR id=12  -->
        <db:data-type name="OUTtypename" id="2002"/>
        <!-- STRUCT id=2002  -->
        </db:data-types>
        ...
        <db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database">
            <db:parameterized-query><![CDATA[CALL storedprocfnc(:INtypename,:OUTtypename);]]></db:parameterized-query>
                <db:in-param name="INtypename" value="#[payload]"/>
                <db:out-param name="OUTtypename" />
        </db:stored-procedure>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多