ODI Procedure to read a directory/folder in interface during package.

Hello,
A have a ODI package including 1 procedure and 1 interface
I will like get the filename in interface (datastore source) with procedure.
Its possible?
Thanks!

I would recommend to go for Java rather than Jython.
Step 1. Assigned Variable for Path in Physical Schema and another Variable for Source Datastore. [ If directory path is fixed and only file name changes then skip assigning variable to physcial schema ]
Step 2. Read via Java and find the files and assign the path and file name to two different Java Variable
Step 3. Refresh the Variable with select '<@=java_path_variable@>' from dual and similarly refresh the variable for filename
Step 4. Call the Interface.
Does this helps.

Similar Messages

  • Procedure to Read a Directory/folder

    Hi!
    I wanted to use Procedure that reads a FOLDER/DIRECTORY in some path and get all the file names within that folder(can be in any language like jython or java or SQL).
    And later I wanted to assign a variable to these fileNames and use it in my Interface.
    Please Help/Suggest.
    Thnx,
    Diwakar

    Hi madha! This is the last attempt I am making, afterwards I will change my logic..
    The error i got lately are:
    org.apache.bsf.BSFException: exception from Jython: Traceback (innermost last):
    (no code object) at line 0
    File "<string>", line 7
         if os.path.isdir(mydir + os.sep + dirOrFile):
         ^
    SyntaxError: invalid syntax
         at org.apache.bsf.engines.jython.JythonEngine.exec(Unknown Source)
         at com.sunopsis.dwg.codeinterpretor.k.a(k.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    and the code I wrote was:
    import os
    ftrg = open('c:/listdir.txt', 'w')
    mydir = 'c:/wwc'
    mylist = os.listdir(mydir)
    mylist.sort()
    for dirOrFile in mylist:
    if os.path.isdir(mydir + os.sep + dirOrFile):
    print >> ftrg, 'DIRECTORY: %s' % dirOrFile
    else:
    print >> ftrg, 'FILE: %s' % dirOrFile
    ftrg.close()
    Please help me last time.

  • Can one ODI procedure be used twice with different option in one package?

    I have a procedure with three check box type options. This procedure is used twice in a package. I tried to set options differently in the package, but once I set up the options for the second call, the first one will be updated to the same as the second one automatically. Is the option supposed be used as parameter? If it is true, why I cannot call procedure twice by using two different parameter settings?
    Thanks

    Create two scenarios of the same procedure. While generating scenarios change the options as necessary. Then in the package call the scenarios instead of the procedure. That should work.

  • Reading Files from client directory folder using servlets or struts.

    HI All,
    Could you please help me out int the below query.
    I want read all files from paricular directory folder from the client machine in web application. I am able to do it from my local machine. but when I am try to do it from some other machine I am not able to get the file list.
    It is very urgent ..please hep me ASAP.

    It should be problem with the file permissions in your client machine ???Hardly.
    @OP: a servlet executes at the server. It doesn't haved any access whatsoever to the client machine.

  • How can i open the directory/​folder and read all the files inside it in order and then close it?

    How can i open the directory/folder and read all the files inside it in order and then close it? any example would be nice.
    thanks

    In the File I/O>>Advanced File Functions Palette is a function named "List directory". This function will give you two arrays. One contains the names of all subdirectories the other the names of all files. If you want to sort them by name use the array sort function. If you want to sort them by another attribute use the File/Directory Info function to get more data. Use a cluster which contains the attribut to sort and the original index of the name. Then sort this array.
    Waldemar
    Waldemar
    Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
    Don't forget to give Kudos to good answers and/or questions

  • How to read I$ table using ODI procedure

    Hi
    Can any one help me how to drop a I$ table from out sie of interface.
    I have tried below approches but no luck
    I have created ODI procedure with technology oracle and target logical schema (I$ tables are creating on target DB) with and with out begin and end;
    Approch 1:
    Given below code in ODi procedure
    drop table <%=odiRef.getTable("L", "INT_NAME", "W")%> <% if (new Integer(odiRef.getOption( "COMPATIBLE" )).intValue() >= 10 ) { out.print( "purge" ); }; %>
    Approch 2:
    drop table I$_<%=odiRef.getTable("L", "TARG_NAME", "A") %>;
    Approch 3:
    drop table <%=odiRef.getTable("L", "INT_NAME", "W")%> (but it is fetching target dtabase schema anme not I$ table)
    Please help me any other alternative way to drop a I$ table, more over this code should be unique for all interface
    Regards,
    Phanikanth

    Thanks bhabani,
    Actaul my requirement is some time my scenario is stoping due some issue at Merge Rows Step (I am using IKM Oracle Incremental Update(Merge) KM) when the next iteration starts it is thwoing and error at create flow table I$ step and error is table name is already exists, so i am doing is if the interface went failed I am storing those information in one table using ODI procedure (INF--ko-->ODI procedure) in same ODI procedure I want to call a I$ table to drop.
    Can you please provide the steps so it will very useful for me using Java variable.
    I have gievn a step as below on create I$ table step (after create I$ statement)
    <@ java.lang.String Idollertable = <%=odiRef.getTable("L", "INT_NAME", "W")%> ; @>
    I am calling Idollertable variable in ODI procedure which is ko>* of INF as <@=Idollertable@>
    Note: I have followed below approch
    ODI Procedure Code:
    drop table <@=Idollertable@>; --> *2nd approch*
    begin
    insert into ODI_EXECUTION_ERROR_DETAILS
    (SESSION_NO,
    SCENARIO_NAME,
    CONTEXT_NAME,
    ERR_MESSAGE,
    INSERT_COUNT,
    ERROR_COUNT)
    values
    <%=snpRef.getSession("SESS_NO")%>,
    '<%=odiRef.getPrevStepLog("STEP_NAME")%>',
    '<%=odiRef.getContext( "CTX_NAME" )%>',
    '<%=odiRef.getPrevStepLog("MESSAGE")%>',
    '<%=odiRef.getPrevStepLog("INSERT_COUNT")%>',
    '<%=odiRef.getPrevStepLog("ERROR_COUNT")%>'
    commit;
    drop table <@=Idollertable@>; --> * first approch *
    end;
    Please help me
    Regards,
    Phanikanth
    Edited by: Phanikanth on Mar 3, 2013 9:52 PM
    Edited by: Phanikanth on Mar 3, 2013 9:52 PM

  • Executing Java Code in ODI Procedure

    Hi All,
    I have following  java code which i need to write on ODI procedure but i am not sure which technology to chose (Jython,Sunopsis API or Java BeanShell).
    I tried to execute the procedure Jyhton with <% "Java code"%> but getting the error.Any boddy can suggest where i doing wrong.
    <%
    import javax.naming.Context;
    import javax.naming.NamingEnumeration;
    import javax.naming.directory.*;
    import java.util.Hashtable;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    String userName = "HXXXXXX";
    String CN1=null;
    String Dis_Name=null;
    String Mem_of=null;
    String Mail=null;
    String SGID=null;
    File file = new File("C:/Project/ODI/LDAPID.txt");
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "LDAP://XX.if.YYYY.net:389/OU=XYZ,DC=ZZ,DC=if,DC=XYZ,DC=COM");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, new String("" + "\\" + userName));
    env.put(Context.SECURITY_CREDENTIALS, "");
    DirContext ctx = null;
    NamingEnumeration results = null;
    ctx = new InitialDirContext(env);
    SearchControls controls = new SearchControls();
    controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
    results = ctx.search("", "(objectclass=person)", controls);
    FileWriter fw = new FileWriter(file.getAbsoluteFile());
    BufferedWriter bw = new BufferedWriter(fw);
       while (results.hasMore())
             SearchResult searchResult = (SearchResult) results.next();
             Attributes attributes = searchResult.getAttributes();
             Attribute attr = attributes.get("cn");
             String cn = (String) attr.get();
             CN1=(String.valueOf(attributes.get("cn")));
             Dis_Name=(String.valueOf(attributes.get("displayName")));
             SGID=(String.valueOf(attributes.get("userPrincipalName")));
             Mem_of=(String.valueOf(attributes.get("memberOf")));
             Mail=(String.valueOf(attributes.get("mail")));
             bw.write(CN1 + " || " + Dis_Name + " || " + SGID + " || " + Mail);
             bw.newLine();
    bw.close();
    results.close();
    ctx.close();
    %>
    I am getting following error.
    The application script threw an exception: java.lang.NullPointerException BSF info: CODE_JAVA at line: 0 column: columnNo
    Please suggest what went wrong with the code.
    Thanks
    Regards

    In Jython you don not need to declare the type so String userName = "HXXXXXX"; should simply read userName = "HXXXXXX" . Lots of your code need to be rewritten to work with Jython if you choose that as your technology.

  • Importing ODI Procedure in Insert/Insert-Update mode

    Can we import an ODI procedure from one project to another in INSERT or INSERT-UPDATE mode?
    We are getting xml import error while doing this. But when we do the import in DUPLICATION mode, it successfully does so.
    The issue is that we have an ODI procedure in INT environment which is been used by several other packages. We changed the code of it in our DEV environment and when we tried to import it in INT environment through INSERT-UPDATE mode so that the the changes gets effected, we got error.
    This is quite obvious that the folder/sub-folder IDs are different in both environment and this is causing trouble.
    So, is there any other way, we can reflect the change in the INT environment with minimum effort? I mean, we don't want to import it in DUPLICATION mode....if we do so, we will have to re-map that procedure in all the packages and regenerate them.

    You can use variable to replace the value at runtime in the query but you need to either pass the variable value at startup or you can refresh variable value. But I dont think you can directly retrieve any topology setting as the variable value to be substituted in the query.

  • Error in ODI procedure

    Hi Experts,
    I have created following procedure and triyng to get column value by using rownum. When I run the scenario, I am getting following exception at ODI Procedure step. Can any one please help me on it
    I have created loop package to fetch column value until loop end.
    Please let me know if you are not clear my query
    ODI Procedure:
    begin
    select a.eno into '#EMPNO' from (select rownum r,e.* from trg_emp_01 e) a where a.r=#Counter;
    end;
    #EMPNO variable created as alphanumeric datatype and
    #Counter variable created as alphanumic datatype and it is assign with '1' value
    Exception:
    6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 25:
    PLS-00220: simple name required in this context
    ORA-06550: line 1, column 28:
    PL/SQL: ORA-00904: : invalid identifier
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
    java.sql.SQLException: ORA-06550: line 1, column 25:
    PLS-00220: simple name required in this context
    ORA-06550: line 1, column 28:
    PL/SQL: ORA-00904: : invalid identifier
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1086)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2984)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3057)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execSrcOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandScenario.treatCommand(DwgCommandScenario.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Thread.java:595)
    ODI Procedure:
    begin
    select a.eno into #EMPNO from (select rownum r,e.* from trg_emp_01 e) a where a.r=#Counter;
    end;
    Exception:
    6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 26:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
    java.sql.SQLException: ORA-06550: line 1, column 26:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1086)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2984)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3057)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execSrcOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandScenario.treatCommand(DwgCommandScenario.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Thread.java:595)
    Thanks
    Phani
    Edited by: Phanikanth on Jul 9, 2010 1:25 AM
    Edited by: Phanikanth on Jul 9, 2010 2:08 AM

    Good point - In my case, these are single executable statements. These have been saved in ODI and executed successfully. Just no using my machine.
    EXAMPLE 1------------
    DECLARE
    RetVal ;
    I_STRING VARCHAR2(200);
    BEGIN
    I_STRING := '';
    RetVal := XXX.PKG_XXX.SF_COMMA_TO_TABLE ( I_STRING );
    COMMIT;
    END;
    EXAMPLE 2------------
    SELECT C.COL1, B.COL2, B.COL3,TO_CHAR(B.EFFDT,'YYYY-MM-DD') COL4,B.COL5,B.COL6
    FROM TABLE1 A, TABLE2 B, TABLE3 C
    WHERE
    and A.ID = 'XXX'
    and a.setcntrlvalue = ' '
    AND A.NAME = 'XXX'
    AND A.EFFDT =
    (SELECT MAX(A_ED.EFFDT) FROM TABLE1 A_ED
    WHERE A.SETID = A_ED.SETID
    AND A_ED.EFFDT <= SYSDATE)
    AND B.EFFDT =
    (SELECT MAX(B_ED.EFFDT) FROM TABLE2 B_ED
    WHERE B.SETID = B_ED.SETID
    AND B.ACCOUNT = B_ED.ACCOUNT
    AND B_ED.EFFDT <= SYSDATE)
    AND A.SETID = B.SETID
    AND A.RANGE_FROM = A.RANGE_TO
    AND B.ACCOUNT = A.RANGE_FROM
    AND A.SETID = C.SETID
    AND A.TREE_NAME = C.TREE_NAME
    AND A.TREE_NODE_NUM = C.TREE_NODE_NUM
    AND C.EFFDT =
    (SELECT MAX(C_ED.EFFDT) FROM TABLE3 C_ED
    WHERE C.SETID = C_ED.SETID
    AND C_ED.EFFDT <= A.EFFDT)
    ------------------

  • How to execute unix command from ODI Procedure

    Hi,
    I am trying to execute below unix command from ODI Procedure (Command on Target tab) but I am getting the error "java.io.IOException: Cannot run program "cd": error=2, No such file or directory" but when I try to execute the same command using OdiOSCommand, it is executing successfully. I don't want to use shell script to execute this command. Is there any specific syntax am I missing to execute this command from ODI procedure?
    cd /project3/tmt/;ls *.dmp > dmplist.lst
    Please help me on this...
    Thanks
    MT

    Hi nahlikh,
    Thank you for the reply.
    I used below command in Procedure but still getting the same error as "java.io.IOException: Cannot run program "OdiOSCommand": error=2, No such file or directory".
    OdiOSCommand "-COMMAND=cd /project3/tmt/;ls *.dmp > dmplist.lst"
    as I mentioned earlier if I use the command cd /project3/tmt/;ls *.dmp > dmplist.lst in OdiOSCommand tool it is executing successfully without any issues.
    any thoughts appreciated to get a solution for this issue.
    Thanks
    MT

  • How to call a Windows DLL out of a ODI procedure?

    Hi
    we'd like to use an external tool, provided as a MS Windows DLL, in our odi flow.
    The idea is to use an ODI procedure preparing the input, calling the dll function and handling the functions output.
    Is this possible? How?
    Thanks a lot!

    Perhaps Netbeans is having troubles with the import statements in the wsdl.  OSS note 738912 describes how to combine the 3 parts of the downloaded wsdl into a single file.

  • Purpose: to create photo galleries to insert or not items: 1) with phocagalery, it works 2) with the transfer via lightroom, I do not see the downloaded files but if I want to create a directory folder with the same name, he said he is already, I see noth

    purpose: to create photo galleries to insert or not items:
    1) with phocagalery, it works
    2) with the transfer via lightroom, I do not see the downloaded files but if I want to create a directory folder with the same name, he said he is already, I see nothing in the media in content management
    Can you help me

    Mahsa21,
    We are glad that we were able to resolve the international calling plan issue for you.  If you need assistance,please  reach out to us.
    thanks,
    Tonya D.

  • Isolation Levels in ODI procedures

    Hi,
    I have a package with 1 interfaces and 2 procedures which I want to configure in as one transactional unit
    The package executes the following sequence
    1. Interface loads data from the source to target table
    2. Procedure updates a statuscode on the source table to S
    3. Procedure updates target table sequence number, but the procedure contains a where clause which filter records to updates
    based on records in the source table with statuscode = S.
    Step 3's execution is dependent on update in step 2. These steps behave as expected and all units tests pass when I
    leave the transaction porperty of the procedures as AutoCommit.
    However I want the interface and packages to be executed as a transcational unit so I configued them as follows.
    The 2 procedures are configured to execute in the same Transaction (Transaction 0) with Commit property as "No Commit".
    I based this on other forum entries.
    With this configuration my unit tests seem to fail, the 3 step does not result in any record being updated.
    I think the issue may be related to the isolation levels on the procedures, so I then configured the procedure's "Transaction Isolation" property to be "Read Uncommited".
    When I ran the test in ODI I got the following error below.
    Can you let me know if what I am trying to do is possible ?. Can you have a number of procedures in a single transactional unit,
    where uncommited changes carried out in the first procedure(not committed), can be read in subsequent steps within that same transactional unit.
    I am current using ODI Repository: Development_ODI_D8B4A_RC5
    Any feedback would be appreciated.
    Thanks,
    Breda
    ODI-1226: Step UPD REVN LSM fails after 1 attempt(s).
    ODI-1232: Procedure UPD REVN LSM execution fails.
    ODI-1228: Task UPD REVN LSM (Procedure) fails on the target ORACLE connection SALES_IMP_DATA_SERVER.
    Caused By: java.sql.SQLException: ODI-10068: SnpsConnection: Isolation level not supported
         at com.sunopsis.sql.SnpsConnection.setTransactionIsolation(SnpsConnection.java:905)
         at com.sunopsis.sql.SnpsConnection.changeIsolationLevel(SnpsConnection.java:329)
         at com.sunopsis.dwg.dbobj.SnpSession.changeIsolationLevel(SnpSession.java:3519)
         at com.sunopsis.dwg.dbobj.SnpSessTask.getDefaultDwgConnectConnection(SnpSessTask.java:518)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.getExecutor(SnpSessTaskSql.java:2936)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2878)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2602)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:546)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:461)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1736)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1591)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$2.doAction(StartScenRequestProcessor.java:568)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:224)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor.doProcessStartScenTask(StartScenRequestProcessor.java:489)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$StartScenTask.doExecute(StartScenRequestProcessor.java:1062)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:118)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$1.run(DefaultAgentTaskExecutor.java:49)
         at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor.executeAgentTask(DefaultAgentTaskExecutor.java:41)
         at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doExecuteAgentTask(TaskExecutorAgentRequestProcessor.java:94)
         at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.process(TaskExecutorAgentRequestProcessor.java:85)
         at oracle.odi.runtime.agent.RuntimeAgent.startScenario(RuntimeAgent.java:700)
         at oracle.odi.runtime.agent.InternalRuntimeAgent.startScenario(InternalRuntimeAgent.java:52)
         at com.sunopsis.dwg.tools.StartScen.startScenOnLocalAgent(StartScen.java:983)
         at com.sunopsis.dwg.tools.StartScen.actionExecute(StartScen.java:245)
         at com.sunopsis.dwg.function.SnpsFunctionBaseRepositoryConnected.execute(SnpsFunctionBaseRepos
    Edited by: user807308 on 14-Jan-2011 01:04
    Edited by: user807308 on 14-Jan-2011 01:04

    Similar issue has been discussed here:
    Re: Transaction rollback...
    Check that out

  • ODI Scenario Hang on ODI Procedure

    Hi Experts,
    We have one ODI scenario which consists of a few ODI procedure steps with anonymous PL/SQL block. When one procedure takes a long time to process data (>60min. when data volume is large), the ODI scenario hangs intermittently on the procedure (ODI Operator shows Running state and no progress to next step in Scenario). The pl/sql script finished fine when running against database directly processing the same dataset.
    When the ODI step hangs, the database side where the pl/sql runs on has no more activities, and the db session(v$session) which processes the ODI procedure goes away as well (db session not existing on db anymore). But the ODI Operator still shows the step in running state and hangs there forever (days). The jdbc connection from ODI to db looks fine.
    How can we fix this problem in ODI? The ODI version is 10.1.3.5.
    Appreciate your input on this.
    Thanks,

    The doc said "If your command is being executed in a transaction (numbered 0 to 9)" then I should set 'Commit'. But I used 'Autocommit' for transaction, is the 'Commit' necessary here?
    Thanks!

  • Dynamic PL/SQL code into ODI Procedure

    Hi guys:
    I have a PL/SQL code to execute into a ODI proc that changes because of a loop.
    I have to update N tables that have the same prefix and its sufix is the dynamic part of my PL/SQL. Also I have to set the DT_ETL (I already have a variable in my package with the sysdate) and the limit of a rownum.
    These are my variables:
    vGET_CD_BASE*
    vQTD_REG_UPDATE*
    vETL_DATE*
    The PL/SQL is described below (with the dynamic parts of it as ODI variables #vXXXXX):
    DECLARE
    CURSOR v_Cur IS
    SELECT ROWID KEY_ROW FROM GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_*#vGET_CD_BASE* WHERE DT_ETL = TO_DATE('01/01/1900','DD/MM/YYYY') and rownum < *#vQTD_REG_UPDATE*;
    TYPE t_Tabela IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
    r_Reg t_Tabela;
    BEGIN
    OPEN v_Cur;
    LOOP
    FETCH v_Cur BULK COLLECT INTO r_Reg LIMIT 100000;
    FORALL i IN 1..r_Reg.COUNT
    UPDATE GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_*#vGET_CD_BASE*
    SET DT_ETL = TO_DATE('*#vETL_DATE*','DD/MM/YYYY HH24:MI:SS')
    WHERE ROWID = r_Reg(i);
    EXIT WHEN v_Cur%NOTFOUND;
    COMMIT;
    END LOOP;
    CLOSE v_Cur;
    COMMIT;
    END;
    What do I have to change to make this PL/SQL works in ODI Procedure?
    Regards.
    Luiz Araujo

    Luiz,
    One way you could do is by using the "Command on Source" and "Command on Target" feature of an ODI procedure:
    In Command on Source, you can write query like:
    >
    select vGET_CD_BASE, vQTD_REG_UPDATE, vETL_DATE from some_configuration_table_containing_n_rows
    >
    In Command on Target, you can write:
    >
    DECLARE
    CURSOR v_Cur IS
    SELECT ROWID KEY_ROW FROM GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_#vGET_CD_BASE WHERE DT_ETL = TO_DATE('01/01/1900','DD/MM/YYYY') and rownum < #vQTD_REG_UPDATE;
    TYPE t_Tabela IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
    r_Reg t_Tabela;
    BEGIN
    OPEN v_Cur;
    LOOP
    FETCH v_Cur BULK COLLECT INTO r_Reg LIMIT 100000;
    FORALL i IN 1..r_Reg.COUNT
    UPDATE GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_#vGET_CD_BASE
    SET DT_ETL = TO_DATE('*#vETL_DATE*','DD/MM/YYYY HH24:MI:SS')
    WHERE ROWID = r_Reg(i);
    EXIT WHEN v_Cur%NOTFOUND;
    COMMIT;
    END LOOP;
    CLOSE v_Cur;
    COMMIT;
    END;
    >
    So, for "n" records that are returned by the source query, your PL/SQL package will run "n" times, each time substituting the values of vGET_CD_BASE, vQTD_REG_UPDATE, vETL_DATE respectively.

Maybe you are looking for

  • How do you reset the special keyboard function keys?

    I used to use an older external keyboard that had Dashboard as F4. Now I got a newer keyboard that has Launchpad as F4. I was used to the old way, so I went into the keyboard shortcut for Dashboard and set it as F4. To my disappointment, however, it

  • How to use the types declarations in smartforms

    hai   already i declared the types in smartfomr global defination, how to call the types to the internal table and workarea, in which please i declare the internal table and work area by using the types structures for example types: begin of ty_kna1,

  • Should I use Samsung RAPID?

    So Samsung has a feature exclusive to their EVO line of SSD's.  Right now here is my setup. EVO 120gb: OS, programs EVO 500gb: Source files PNY 250gb: cache, scratch, previews 3x TB in RAID 5: exports, project files. Given this article: AnandTech | S

  • Projects Cross-charge functionality Vs Inter-project Billing

    Hi, We are currently evaluating the funtionalities of Project Cross Charge Vs Inter-project billing. Our setup is such that we have 3 Legal Entities, 3 Business groups, 3 SOB's and 3 operating units, each tied to their own legal entity, Business grou

  • HP4700 print order duplex printing

    We have a 4 bin HP4700 color laserjet in the office. The top bin (2) has a printed letterehead. This works fine if you print single-sided (simplex) but if you tick the box to print Duplex in Finishing it prints the first page on the BACK of the paper