2017-06-07 55 views
0

我正在運行多個選擇查詢,我希望他們一個接一個地運行。 在本例中,我選擇了賬號,然後在下面的查詢中使用這些號碼。這些查詢是否會一個接一個地連續運行,即只有在前一個查詢完成後才運行下一個查詢。我是否需要將它們包裝在複合源中並將它們包裝在事務中?那將是什麼樣子?騾數據庫連接器多個查詢

<flow name="PopulateAccount"> 
      <db:select config-ref="dsConfig" doc:name="Get Account ID"> 
      <db:paramterized-query><![CDATA[ 

       SELECT ACC_NUM.... 
      </db:select> 

      <custom-transformer class="com.vf.ListTransformer"> 

      <set-session-variable variableName="messageID" value="#[payload]" 
           doc:name="Set Account IDs"/> 


     <!-- The next query depends on the Account IDS from 
       previous results in the session variable --> 

     <db:select config-ref="dsConfig" doc:name="Get Account Detail"> 
      <db:paramterized-query><![CDATA[ 
       SELECT ACC_NAME,.... 
      </db:select> 
     <custom-transformer class="com.vf.AccountsTransformer"> 

      <!-- More database operations ---> 
    </flow> 

回答

0

將查詢連續運行一個其他

肯定後,只要你不採取任何措施並行運行它們,就像例如在移動數據庫組件單獨的流程並以異步方式調用它。

我需要包起來的複合源

沒有,特別是沒有,如果你(在你的例子一樣)使用的第一個查詢的結果在第二個查詢

並在交易中包裹它們

爲什麼?你沒有在你的例子中插入/更新任何東西。

會是什麼樣子?

就像你的例子。我唯一會改變的是如何存儲第一個查詢的結果。雖然使用set-variable沒有什麼問題,但我更喜歡使用一個濃縮器將結果存儲在變量中,而不是在之後更改有效負載和設置變量。

<flow name="testFlow"> 
    <enricher target="#[flowVars.messageID]" doc:name="Message Enricher"> 
     <db:select config-ref="MySQL_Configuration" doc:name="select ACC_NUM"> 
      <db:parameterized-query><![CDATA[SELECT ACC_NUM ...]]></db:parameterized-query> 
     </db:select> 
    </enricher> 
</flow> 
+0

謝謝你的伴侶,真的很感謝。 – BreenDeen