Procedure ODI

Hi guys,
I need your help in ODI procedure with source and target code.
My return select in source step is a varchar2 with a carrier return, see sample and ignore quotes:
'hello
world'
When was executing the target step, the carrier return is replaced by blank space, returning:
'hello world'
I don't like this. I'd like work with carrier return.
The problem is on internal java steps between source and target steps. I could use a pl/sql replace function, for example: replace(txt, chr(13), '+'), but, I'd like know your opinion about this characteristic.
Have anybody a suggestion?
Regards.
Eduardo.

Hi guys,
I need your help in ODI procedure with source and target code.
My return select in source step is a varchar2 with a carrier return, see sample and ignore quotes:
'hello
world'
When was executing the target step, the carrier return is replaced by blank space, returning:
'hello world'
I don't like this. I'd like work with carrier return.
The problem is on internal java steps between source and target steps. I could use a pl/sql replace function, for example: replace(txt, chr(13), '+'), but, I'd like know your opinion about this characteristic.
Have anybody a suggestion?
Regards.
Eduardo.

Similar Messages

  • Error Inserting Data from Procedure ODI 11g (No data)

    Hi everyone!
    I have a problem inserting data from a procedure, the procedure works "fine" (no errors), on the log counter shows the number of rows inserted, but, on the database rows does not exists, an easy sample is:
    TARGET: ORACLE
    insert into table_t
    (desc)
    values
    (:description)
    SOURCE: ORACLE
    select description from table_s
    I check (ODI), the conection (works fine), modules (works fine), "select from table" (works fine).
    I check (Database), inserting rows direct (works fine).
    What can i check?
    Thanks for your response.

    Hi
    Try below 2 things
    First
    In target:oracle
    insert into table_t
    (desc)
    values
    ('#descpt');
    Second
    In target:oracle
    insert into table_t
    (desc)
    values
    ('#Proc_Var');
    Note: For alias name (*descpt* ) or Project variable (*Proc_Var*) with # symbol and single quotes
    Regards,
    Phanikanth

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

  • ODI 11g  (odi 11.1.1.3)  procedure failed -  Encountered the symbol "," ...

    Hi All,
    I am facing problem while calling PL/SQL procedure from ODI procedure:
    ODI Console show below error code on failure of procedure:
    =======================================================================
    ODI-1228: Task PR_RETRIVE_DATA (Procedure) fails on the target ORACLE connection SES_DW.
    Caused By: java.sql.SQLException: ORA-06550: line 1, column 30:
    PLS-00103: Encountered the symbol "," when expecting one of the following:
    ( ) - + case mod new not null <an identifier>
    <a double-quoted delimited-identifier> <a bind variable>
    table continue avg count current exists max min prior sql
    stddev sum variance execute multiset the both leading
    trailing forall merge year month day hour minute second
    timezone_hour timezone_minute timezone_region timezone_abbr
    time timestamp interval date
    <a string literal with character set specification>
    ================================================
    Thanks,
    Dharmaraj

    Hi,
    it seems there are compilation errors in your PL/SQL, leading to the ORA-06550 error. Check your PL/SQL code and try to execute it directly in the database to see if the issue is related to ODI.
    Regards,
    Alex

  • ODI Procedures not working after upgrading from 10G to 11G

    Hello Gurus,
    We have run into a scenario where the procedures in ODI are not working after we upgraded it from 10G to 11G (11.1.1.6). However we can make it to run if we create the procedure from scratch.
    Also we are having issues related to packages where in the packages were running before we applied the patch 11.1.1.6.3. And after applying the patches they are not running.
    Any help will be appreciated.
    Thanks

    If you want someone to help you, please be elaborate in the exact errors you are getting.
    A general statement would do nothing but guess work.
    What is the error that you get while executing the procedure.
    What are the exact issues that you get while executing packages ?

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

  • ODI -OBIEE Lineage:Error while running ODI Procedure

    Hi ,
    I am using prebuilt mapping provided by oracle to achive dtata lineage between odi and obiee.
    I am getting error when i run scenario at Create "Same Column dummy Exp" procedure step.
    Error Info :
    ODI-1228: Task Create the "Same Column" dummy Expression (Procedure) fails on the target ORACLE connection ORACLE_XPONE.
    Caused By: java.sql.SQLSyntaxErrorException: ORA-00984: column not allowed here
    Procedure info:
    insert into <%=odiRef.getObjectName("LINEAGE_EXPRESSION")%>
    (I_LINEAGE_EXPRESSION, PROJECT_NAME, FOLDER_NAME, JOB_NAME, EXPRESSION, EXPRESSION_ORIGIN)
    values
    (<%=odiRef.getObjectName("BI_OBJ_ID.NEXTVAL")%>, 'Dummy', 'Dummy', 'Dummy', '(Same Column)', 'Dummy')
    Please let me know how to overcome this problem if anybody have achived lineaged by using oracle provided mappings.
    Thanks in Advance

    Hi,
    If you are on ODI 11g remove the odiRef.getObjectName("BI_OBJ_ID.NEXTVAL") function call and just give the sequence BI_OBJ_ID.NEXTVAL where ever its being used.
    Regards,
    Rajesh

  • Calling Oracle Stored procedure with OUT parameter from ODI

    Hi,
    I called an oracle stored procedure with following anonymous block in the ODI procedure.
    Declare
    Status varchar2(10);
    Begin
    OTM.DeleteTarget('E_KPI_TARGET_VALUE', Status);
    End;
    I want to capture the OUT parameter STATUS value in a project level variable.
    And based on its va;lue I would like to choose between 2 interfaces in my package.
    Please help me in doing this.

    Hi,
    For that kind of situation I commoly use:
    1) one step with:
    create or replace package <%=odiRef.getSchemaName("W")%>.pck_var
    Status varchar2(10);
    end;
    * transaction 9, for instance
    2) step
    Begin
    OTM.DeleteTarget('E_KPI_TARGET_VALUE', <%=odiRef.getSchemaName("W")%>.pck_var.Status);
    End;
    * transaction 9
    3) then, at an ODI variable, use a refresh like:
    select <%=odiRef.getSchemaName("W")%>.pck_var.Status from dual
    at same logical shema where the package was created.
    Does it make sense to you?

  • Problem: Use an ODI variable in a Java Procedure

    Hi and thanks in advance,
    i need to use a project variable in a java procedure i've written. In particular i should read a file (and manage it...), but its name is stored in avariable called #fileName that i refresh each time.
    writing something like:
    <% FileInputStream fis = new FileInputStream(C:\\"+"#filename");
    etc.
    etc.
    %>
    doesn't work...
    How can i use the value of my ODI variable inside the Java code?
    Please, help me if you can...
    Thank you very much.

    Any Idea? Please, this question is blocking me...

  • Is it possible to use a ODI variable in a procedure

    I am trying to call an external java program from the operating system (MS-DOS) using a procedure. This is possible using the os.system("<command>") syntax - declaring a procedure to use Jython. However, I want to be able to pass two ODI variables to the java program. I do not seem able to do this, is it possible ?
    I also tried calling the OS command from within a package - but again cannot get the OS command to pass the variables.
    I would appreciate any help on this.

    Thanks for your response.
    I am still unable to do this.
    Problem is the procedure is "Jython" and it does not know what the ODI variables are.
    I basically have two variables source and target which need to be passed to a java procedure.
    So I created two VARIABLES in ODI - source and target.
    I then have a procedure with the command;
    import os
    import sys
    cmd = "java ConvFile"
    rc = os.system(cmd)
    when this runs it does not pass the variables.
    if you have
    import os
    import sys
    cmd = "java ConvFile"+#Tax_Updates.SourceFile+#Tax_Updates.TargetFile
    rc = os.system(cmd)
    then it does not know what #Tax_Updates.SourceFile and #Tax_Updates.TargetFile are and so just passes them as strings.
    If you still think it is possible or anyone esle knows can you elaborate a little on the solution.
    Thanks
    Nick

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

  • How to use Update Statement in ODI Procedure

    Hi,
    How can I use an update statement inside an ODI procedure.
    Thanks

    Hi,
    You do not need the BEGIN and END. ODI procedures are free text, so you can simply write your update statement, as you would in toad/sql developer etc etc. Just make sure you set the Technology and the logical schema. It is how ever best practice to also use the API:
    <%=odiRef.getSchemaName("YOUR_LOGICAL_SCHEMA_NAME", "D")%>. to prefix tables. This way, you select data from different schema's in the same instance (as long a your user has the correct privs).
    Cheers
    Bos
    Edited by: Bos on Jun 22, 2011 3:09 PM

  • ODI step in a procedure is hanging

    Hi,
    I am trying to run the following query in a step in an ODI procedure.
    The query runs perfectly fine when run in Toad but hangs in an Odi procedure.
    I am doing this to eliminate duplicates from a load
    what can I do?
    DELETE FROM DWOWNER.BIW_CLAIMS_AND_LODGEMENTS_F
    WHERE rowid not in
    (SELECT MIN(rowid)
    FROM DWOWNER.BIW_CLAIMS_AND_LODGEMENTS_F
    GROUP BY integration_id)
    AND MONTH_END_IND = 'Y'
    Please Help.
    Is there a better way of doing this via interface settings where duplicates go into the SNP error table. I have put a unique constraint on the integration_id with DROP_ERROR_TABLE = false and DROP_CHECK_TABLE = false in the CKM but this places duplicates in the Fact table.
    Thanks
    Thanks
    Helen

    Thanks for your response.
    I am still unable to do this.
    Problem is the procedure is "Jython" and it does not know what the ODI variables are.
    I basically have two variables source and target which need to be passed to a java procedure.
    So I created two VARIABLES in ODI - source and target.
    I then have a procedure with the command;
    import os
    import sys
    cmd = "java ConvFile"
    rc = os.system(cmd)
    when this runs it does not pass the variables.
    if you have
    import os
    import sys
    cmd = "java ConvFile"+#Tax_Updates.SourceFile+#Tax_Updates.TargetFile
    rc = os.system(cmd)
    then it does not know what #Tax_Updates.SourceFile and #Tax_Updates.TargetFile are and so just passes them as strings.
    If you still think it is possible or anyone esle knows can you elaborate a little on the solution.
    Thanks
    Nick

  • ODI update procedure does not finish

    Hi all,
    I would like to execute some arbitrary SQL to update some rows in an intermediary table and am using a procedure to do so. It runs but never seems to complete. If I do a dummy procedure with SELECT 1 FROM Dual then it runs fine, but this one with an UPDATE does not work. I have tried changing the commit settings to no avail.
    Also, the UPDATE statement that I am running is valid SQL (obviously) but it's a smaller version of the statement that I really want to execute -- it seems that the larger statement I want to run is somehow getting parsed wrong by ODI (even though the code works fine if I just execute it myself).
    Just wondering if anyone had any thoughts on a Procedure step hanging, thanks.
    Jason

    It seems you have some deadlock during the update step. Basically, it occurs when 2 sessions try to update the same records at the same time (or when one of them didn't commit).
    Launch it again, and check with your DBA the oracle sessions (you can also check it with PL-SQL Developer tool) to see if there is a deadlock (error ora-00060).

Maybe you are looking for

  • Open/Closing of periods

    Hi, We can open and close posting periods by using TC-OB52 but this job can be done by only authorised persons. If they r not available can enduser can change these periods? If it is true how can they? I just listened that he can change through easy

  • Always scrolling back to the search bar for pdf files in ibooks. Is there a way to fix this?

    ALWAYS scrolling back up to the search bar for pdf files in ibooks. Is there a way to fix this?

  • 2 Questions That I Need Help With...

    I'm in the process of reimporting some 3000 plus cds onto a new hard drive, after my last HD crashed. The files were retrieved for the most part, but I want to upgrade them to a higher bit rate on a different HD. Am doing it on same lappy that I bega

  • Noted items in APP Run

    Hi Gurus, I m trying to process noted items in APP - tcode-F110, where i have entered 3 down payment requests Rs 5000/-, Rs 10000/- & Rs 8000/- out of which i have made the payment for Rs 5000 & Rs 10000/- in F-48 and now I am trying to make payment

  • Problem with netflix after update!

    Since I update my Apple TV my netflix became useless. Every time that I try to watch something it starts very well but suddenly the video start from the beginning again and the audio continues normally. Any sugestions?