2016-09-29 39 views
0

嗨我無法從存儲過程中檢索到我的mule流中的varchar值。它總是返回NULL值。我遵循相同的順序,同時在mule和存儲過程腳本中聲明輸出參數。這裏是我的mule流程和我正在使用的示例存儲過程腳本。請幫助解決此問題。提前致謝。從Mule中的存儲過程中檢索varchar值時發出的問題

<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>

示例存儲過程腳本

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;

回答

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/

+0

我已經調試模式運行該代碼,並在調試記錄儀之前就可以看到空值。 – Jitendra

+0

您可以發佈您在oracle中運行存儲過程時看到的內容嗎? – jvas

+0

嗨Jvas,我的流程是正確的問題是我的oracle驅動程序,導入新的驅動程序後,我能夠獲取值。謝謝 – Jitendra