in previous versions of ODI i had a chance to create "for loops" in packages , so now i am gonna explain how we can implement a for loop in ODI 12c universe.
First i am gonna reverse a table that contains branch information.
Table structure as follows:
What i want to do is to get all data except for the one with maximum ORDER_NUM ( Normally we can do this by using bulk SQL but this time i am gonna create a for loop and making row by row insertion. )
As usual i need variable objects to implement a standart for loop.
Variable:MAX_COUNT ( holds total number of rows in our source table )
Variable: ORDER_ID_VAR ( set to 0 )
and now I am gonna create an interface that let me transfer data one by one into my target table.Inside the mapping , filter object help me to associate interface with my variables.
Lastly i will create a package to implement my for loop.As you can see below , at first i am refreshing my variables to assign initial values then ORDER_ID_VAR_INC object ( set variable ) is used for incrementing ORDER_ID_VAR.
ORDER_ID_CHECK_1 (Evaluate variable) is used for checking whether ORDER_ID_VAR less than MAX_COUNT or not. If it is true , our interface will be called for execution otherwise beep object will be started to finish execution.
target table will be look like this
and operator log for execution