2016-04-04 5 views
0

Есть ли способ, которым я могу иметь массовый режим, когда я использую хранимую процедуру в компоненте базы данных Mule. Похоже, что текущая версия поддерживает его только для запросов с параметризацией. Есть ли какая-нибудь работа вокруг? Я пытаюсь что-то подобное, как показано ниже.Mule 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 = вызов sp_name (Arg1, Arg2 и т. Д.). Если есть какие-либо аргументы, вы получите значение в виде списка карт на выходе. Надеюсь это поможет! – jvas

+0

Спасибо за обмен. Сохраненный вызов proc работал в режиме обновления. Он также работал в Batch commit. Не знаете, почему они ничего не упомянули об этом в документации 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> 

Или вы можете изменить Еогеасп в пакетном этапе пакетной обработки Mule.

+0

Благодарим вас за ответ. Я на самом деле пытаюсь избежать выдачи нескольких операторов в базу данных. В предыдущих версиях mule с конечной точкой jdbc: вы могли выпускать пакетное/массовое обновление, просто предоставляя список объектов для jdbc: исходящий (включая хранимые procs), есть ли замена для этого? – jvas

+0

Вы все еще можете использовать это, но это уже устарело. Если вы хотите использовать список объектов, вы можете ввести значение # [полезная нагрузка], которое является списком. затем измените тип как «JAVA_OBJECT» или «ARRAY».

+0

Спасибо. Я как-то нашел для этого обход. Пожалуйста, напишите мой ответ. – jvas

Смежные вопросы