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! -
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,
DharmarajHi,
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.
ThanksIf 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 ? -
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 AMGood 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 AdvanceHi,
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
MTHi 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.
ThanksHi,
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
HelenThanks 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.
JasonIt 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
-
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 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
-
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?