您好我无法将存储过程中的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;
示例存储过程脚本
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;
答案 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>