2015-08-14 3 views
1

Я использую Mule CE 3.6.1. У меня есть следующая конфигурация соединителя базы данных, вызывающая хранимую процедуру Oracle.Mule: вызов хранимой процедуры 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 

Я также попытался с помощью других типов из-Param или не указав тип без успеха.

Пожалуйста, дайте мне знать, какой тип out-param я должен использовать для таблицы записей Oracle, или если я должен сделать это в Java вместо этого. Спасибо заранее.

ответ

0

Вы можете использовать приведенное ниже решение для параметра 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> 
Смежные вопросы