我正在使用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记录表使用什么样的外部类型,或者我应该用Java来代替。非常感谢提前。
答案 0 :(得分:0)
您可以使用以下解决方案输出参数。
<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>