My Oracle Support Banner

"<%=odiRef.getInfo("SRC_DSERV_NAME")%>" when Used in ODI KM Fails to Return Value if Preceded by a Variable and "@" (Doc ID 2647702.1)

Last updated on APRIL 06, 2021

Applies to:

Oracle Data Integrator - Version 12.2.1.3.190415 to 12.2.1.4.200123 [Release 12c]
Information in this document applies to any platform.

Symptoms

When calling the Oracle Data Integrator (ODI) Substitution API <% = odiRef.getInfo ("SRC_DSERV_NAME")%> in an ODI customized Knowledge Module (KM), there is no value returned if the command is preceded by an ODI variable followed by "@", and not separated by space.

This works fine in 11g.

To reproduce:

  1. Create a customized KM and add a step using <% = odiRef.getInfo ("SRC_DSERV_NAME")%> like below. (Replace the placeholder values including their surroung <> with actual values)

    Data OutFile user/password@ :
    OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME.ERR>" "-SYNCHRONOUS=YES"
    sqlplus -S user1/password1@<%=odiRef.getInfo ("SRC_DSERV_NAME")%> @<DIR>\<FILE_NAME.SQL>

  2. Add another similar step which uses ODI variables, like the following:

    Name: Data OutFile - Variables@
    Target command:
    OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME2.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME2.ERR>" "-SYNCHRONOUS=YES"
    sqlplus -S #GLOBAL.JDBC_USER/#GLOBAL.JDBC_PASSWORD@<%=odiRef.getInfo ("SRC_DSERV_NAME")%> @<DIR>\<FILE_NAME2.SQL>

  3. Create a mapping that uses the KM

  4. Execute the mapping with log level 6

  5. Compare the generated code in both ODI 11g and ODI 12c, notice that "Data OutFile - Variable@" step is missing the dataserver name "ORCL" when executed in ODI 12c.

Code generated in ODI 11g: 

Data OutFile - user/password@ :
OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME.ERR>" "-SYNCHRONOUS=YES"
sqlplus -S user1/password1@ORCL @<DIR>\<FILE_NAME.SQL>

Data OutFile - Variable@ :
OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME2.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME2.ERR>" "-SYNCHRONOUS=YES"
sqlplus -S #GLOBAL.JDBC_USER/#GLOBAL.JDBC_PASSWORD@ORCL @<DIR>\<FILE_NAME2.SQL>

  
Code generated in ODI 12.2.1.4.0:

Data OutFile - user/password@ :
OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME.ERR>" "-SYNCHRONOUS=YES"
sqlplus -S user1/password1@ORCL @<DIR>\<FILE_NAME.SQL>


Data OutFile - Variables@ :
OdiOSCommand "-OUT_FILE=<DIR>\<FILE_NAME2.OUT>" "-ERR_FILE=<DIR>\<FILE_NAME2.ERR>" "-SYNCHRONOUS=YES"
sqlplus -S #GLOBAL.JDBC_USER/#GLOBAL.JDBC_PASSWORD @<DIR>\<FILE_NAME2.SQL>



NOTE: In the examples above,  user details / company name / address / email / telephone number represent a fictitious sample (based upon made up data used in the Oracle Demo Vision instance). Any similarity to actual persons, living or dead, is purely coincidental and not intended in any manner.

 

Changes

 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.