2016-09-29 9 views
0

こんにちは、私のミュールフローのストアドプロシージャからvarchar値を取得できません。それは常にNULL値を返しています。私は同じ順序で、出力パラメータを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:parameterized-query><![CDATA[{call user1.CARRINV(:MSG,:CD)}]]></db:parameterized-query> 

参照の追加:http://bushorn.com/mule-with-stored-procedure/

+0

私はデバッグモードでこのコードを実行しているともデバッガでロガーの前にnull値を見ることができました。 – Jitendra

+0

oracleでストアドプロシージャを実行すると表示される内容を投稿できますか? – jvas

+0

こんにちはJvasさん、私の流れは正しいです。問題は私のoracleドライバで、新しいドライバをインポートした後、私は値を取得できました。ありがとうございました – Jitendra

関連する問題