我使用的是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我也尝试过使用其他out-param类型,或者没有成功地指定一个类型。
请让我知道我应该为Oracle记录表使用哪种out-param类型,或者我是否应该用Java来实现。在此之前,非常感谢您。
发布于 2016-12-21 14:06:47
您可以对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>https://stackoverflow.com/questions/32012072
复制相似问题