从Mule中的存储过程检索varchar值时发出问题

时间:2016-09-29 14:32:01

标签: stored-procedures mule

您好我无法将存储过程中的varchar值检索到我的mule流程中。它始终返回NULL值。我在mule和存储过程脚本中声明输出参数时遵循相同的顺序。这是我的mule流程和我正在使用的示例存储过程脚本。请帮助解决此问题。提前谢谢。



   <db:oracle-config name="Oracle_Configuration" host="localhost" port="1521" instance="xe" user="user1" password="user1" doc:name="Oracle Configuration"/>
    <flow name="SPTestFlow">
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="1000" timeUnit="DAYS"/>
            <logger message="Started" level="INFO" doc:name="Logger"/>
        </poll>
        <db:stored-procedure config-ref="Oracle_Configuration" doc:name="CostCalculationSP" >
            <db:parameterized-query><![CDATA[call user1.CARRINV(:MSG,:CD)]]></db:parameterized-query>
            <db:out-param name="MSG" type="VARCHAR"/>
            <db:out-param name="CD" type="VARCHAR"/>
        </db:stored-procedure>
        <logger message="#[payload[MSG]],#[payload[CD]]" level="INFO" doc:name="Logger"/>
    </flow>
&#13;
&#13;
&#13;

示例存储过程脚本

&#13;
&#13;
create or replace PROCEDURE CARRINV 
(
 MSG OUT VARCHAR2,
 CD OUT VARCHAR2
) AS 
BEGIN

  MSG:='success';
  CD:='1';
exception
WHEN OTHERS THEN
MSG:= SQLERRM;
CD:= '0';
END CARRINV;
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

它可能是记录器中的语法(注意参数周围的引号) - 试试这个:

<logger message="#[payload['MSG']],#[payload['CD']]" level="INFO" doc:name="Logger"/>

另外请尝试在db调用周围添加大括号:

<db:parameterized-query><![CDATA[{call user1.CARRINV(:MSG,:CD)}]]></db:parameterized-query>

添加参考:http://bushorn.com/mule-with-stored-procedure/