Mule db component Input payload from another db query

1.2k Views Asked by At

I need a basic Mule flow in order to select rows from one database, transform the payload and call a procedure in another database. I don't want to use DataMapper component, I would like to use Java Transformer instead.

My XML flow:

<set-variable variableName="currentOrder" value="#[payload.increment_id]" doc:name="Variable"/>
<db:select config-ref="MySQL_Configuration" doc:name="GET ORDER">
    <db:parameterized-query><![CDATA[select id from sales where id=#[currentOrder]]]></db:parameterized-query>
</db:select>
<custom-transformer class="com.mycompany.transformers.TargerProc" doc:name="Java"/>
<db:stored-procedure config-ref="Oracle_Configuration" doc:name="PROC1">
    <db:parameterized-query><![CDATA[call proc1(:P1,:P2)]]></db:parameterized-query>
    <db:in-param name="P1" type="NUMERIC" value="#[payload.id]"/>
    <db:out-param name="P2" type="NUMERIC" value=""/>
</db:stored-procedure>

First problem:

Message payload is of type: CaseInsensitiveHashMap

Could someone shed some light on this? I think it is really simple to achieve this.

Thanks in advance!

1

There are 1 best solutions below

3
Anirban Sen Chowdhary On BEST ANSWER

Try this <db:parameterized-query>{ call proc1(:P1,:P2) }</db:parameterized-query> :-

<set-variable variableName="currentOrder" value="#[payload.increment_id]" doc:name="Variable"/>
<db:select config-ref="MySQL_Configuration" doc:name="GET ORDER">
    <db:parameterized-query><![CDATA[select id from sales where id=#[currentOrder]]]></db:parameterized-query>
</db:select>
<custom-transformer class="com.mycompany.transformers.TargerProc" doc:name="Java"/>
<db:stored-procedure config-ref="Oracle_Configuration" doc:name="PROC1">
    <db:parameterized-query>{ call proc1(:P1,:P2) }</db:parameterized-query>
    <db:in-param name="P1" type="NUMERIC" value="#[payload.id]"/>
    <db:out-param name="P2" type="NUMERIC" value=""/>
</db:stored-procedure>