2016-04-04 7 views
0

のストアドプロシージャのための一括更新モードでは、私はミュールのデータベース・コンポーネントでストアドプロシージャを使用していたとき、私はバルクモードを持つことができる方法はあります。現在のバージョンでは、パラメータ化されたクエリに対してのみサポートされているようです。何か回避策がありますか?私は以下のようなものを試しています。ミュール3.7 - データベース

<db:insert config-ref="" bulkMode="true" doc:name="Database"> 
     <db:parameterized-query> 
      <![CDATA[INSERT INTO TABLE (ID, BILLING_NUMBER__C, TYPE) 
      VALUES (#[payload.Id], #[payload.Billing_Number__c], #[payload.type]);]]> 
     </db:parameterized-query> 
    </db:insert> 

しかし、私は、私はbulkModeフラグを参照していないストアドプロシージャとクエリを置き換えたいです。助けてください。 おかげ

答えて

1

私はこの問題を解決しました。私はまだ「更新」機能を択一ますが、ストアド・プロシージャです動的なクエリを使用して(新しいDBコンポーネントを使用して)ストアドプロシージャを使用して一括更新を行うことができますように見えます。私はBulk-Updateオプションをチェックし、配列を入力として受け入れることができます。

<db:update config-ref="L360_Database_Configuration" bulkMode="true" doc:name="Sync_LoanAppDB"> 
    <db:parameterized-query><![CDATA[${sp_name}]]></db:parameterized-query> 
</db:update> 
+0

このようにINとOUTパラメータを設定することはできません。これはあなたがしなければならないことではありませんでしたか、おそらくそれを回避する方法を見つけましたか? – jpendle

+0

一括更新クエリとしてSPを使用する必要があるため、これは私の回避策です。あなたがしたいことがあれば、あなたのプロパティファイルにMEL式として引数を与えることができます。たとえば、sp.call = call sp_name(Arg1、Arg2など)の場合出力引数がある場合は、その値を出力のマップのリストとして受け取ります。お役に立てれば! – jvas

+0

共有いただきありがとうございます。保存されたproc呼び出しは、更新モードで機能しました。バッチコミットでも機能しました。なぜMuleのドキュメントでこれについて何も言及しなかったのか分かりません。 – Abhi

0

あなたはこれに似て試すことができます。

<foreach doc:name="For Each"> 
     <db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Call Stored Procedure Function"> 
      <db:parameterized-query><![CDATA[CALL callFunction(:name,:id_serv);]]></db:parameterized-query> 
      <db:in-param name="display_name" type="VARCHAR" value="#[payload.name]"/> 
      <db:out-param name="id_serv" type="INTEGER"/> 
     </db:stored-procedure> 
</foreach> 

それとも、ミュールのバッチ処理のバッチ工程へのforeachを変更することができます。

+0

は、ご返信いただきありがとうございます。私は実際にデータベースに複数のステートメントを発行することを避けようとしています。 JDBCとラバの以前のバージョンでは:そのための代替があるアウトバウンド(保存されprocsのをincludeing):エンドポイント、あなただけのJDBCにオブジェクトのリストを提供することにより、バッチ/一括更新を発行するだろうか? – jvas

+0

これはまだ使用できますが、既に廃止予定です。オブジェクトのリストを使用する場合は、リストに#[payload]という値を挿入できます。タイプを「JAVA_OBJECT」または「ARRAY」に変更します。

+0

ありがとうございます。私はこのための回避策を見つけました。私の答えを参照してください。 – jvas