2016-04-04 17 views
0

Mule'un Veritabanı bileşeninde saklı yordam kullanırken, toplu bir şekilde kullanabileceğim bir yol var mı? Geçerli sürüm sadece Parametreli sorgular için destekliyor gibi görünüyor. Mevcut bir iş var mı? Aşağıdakine benzer bir şey deniyorum.Mule 3.7 - Veritabanındaki saklı yordamlar için toplu güncelleştirme modu

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

Ancak sorguyu bulkMode bayrağını görmediğim saklı bir yordamla değiştirmek istiyorum. Lütfen yardım et. Teşekkür

cevap

1

Bu sorunu çözdüm. "Güncelle" işlevini seçerek saklı bir yordam kullanarak (yeni db bileşenini kullanarak) bir toplu güncelleştirme yapmaya devam edebilirim, ancak saklı yordam olan bir dinamik sorgu kullanarak. Toplu Güncelleme seçeneğini kontrol etmeme izin verir ve bir giriş olarak bir dizi kabul eder.

<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

Ancak IN ve OUT parametrelerini bu şekilde ayarlamak mümkün görünmüyor. Yapman gereken bir şey değil miydi yoksa belki de onun etrafında bir yol buldun mu? – jpendle

+0

Bu, benim bir toplu güncelleştirme sorgusu olarak SP kullanmam gerektiğinden, bu benim etraftaki işim. Yapmak istediğiniz bir şey varsa, argümanlarınızı özellik dosyanızda MEL ifadeleri olarak sağlayabilirsiniz. Örneğin, sp.call = call sp_name (Arg1, Arg2, etc). Herhangi bir argüman varsa, değeri çıktıdaki haritaların bir listesi olarak alırsınız. Bu yardımcı olur umarım! – jvas

+0

Paylaşım için teşekkürler. Kayıtlı proc araması Güncelleme modunda çalıştı. Batch taahhüdünde de çalıştı. Mule belgelerinde neden bunun hakkında hiçbir şey söylemediğinden emin değil. – Abhi

0

Buna benzer deneyebilirsiniz:

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

Yoksa Mule Toplu İşleme toplu adımına foreach değiştirebilir.

+0

Cevabınız için teşekkür ederiz. Aslında veritabanına birden çok ifade vermekten kaçınmaya çalışıyorum. Jdbc: endpoint ile önceki katma sürümlerinde, jdbc: outbound (saklanan pro-süreçleri dahil ederek) için bir nesne listesi sağlayarak bir toplu/toplu güncelleme yayınlayabilirsiniz. Bunun için bir yedek var mıdır? – jvas

+0

Bunu hala kullanabilirsiniz, ancak bu zaten kullanımdan kaldırılmıştır. Nesnelerin bir listesini kullanmak istiyorsanız, o zaman Liste olan # [yük] değerini enjekte edebilirsiniz. sonra türü "JAVA_OBJECT" veya "ARRAY" olarak değiştirin.

+0

Teşekkür ederim. Bunun için bir iş buldum. Lütfen cevabımı al. – jvas

İlgili konular