Forum Stats

  • 3,853,528 Users
  • 2,264,231 Discussions
  • 7,905,381 Comments

Discussions

How can one reuse in an encapsulated scenario, the value of a variable passed in from the starscen c

3551278
3551278 Member Posts: 10
edited Sep 7, 2018 7:07AM in Data Integrator

Hello,

In ODI 12c, I am launching scenario 1 with the starscen command.

In this command I am passing the value "xyz" for the text variable A.

The variable A is declared in the beginning of my scenario.

During scenario 1, another text variable B is set to "abcd"

Then scenario 2 is called in which the last text variable C is refreshed, appending B and C.

Unfortunately, it doesn't work, as the variable A value is not historized when passed from the starscen command, as I found there :

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=528357651853638&id=423737.1&displayIndex=7&_afrWindowMode=0&_adf.ctrl-state=15w0scgw85_244

"An ODI Variable passed in from startscen may be Historized or not.

The startscen will correctly set it.

An ODI Variable passed in from startscen must be declared in the Package.

However:

   - The passed-in value will not be recorded in the historical list of values

   - Values set by default will not be recorded in the historical list of values."

Therefore, when variable C is refreshing, it is appending BLANK and "abcd", raising an error.

The whole process works well when i set variable A manually.

The value is then historized, and can be recovered in scenario 2.

It doesn't work when I'm passing the value through the command startscen.

The value is picked up correctly in SCEN1, but can't be used SCEN2.

Is there a way to store the value of A, and use it in the encapsulated scenario ?

Thank you.

Pierre-Yves

Ce message a été modifié par : 3551278

Tagged:

Best Answer

  • Pavan8u
    Pavan8u Member Posts: 278 Silver Badge
    edited Aug 24, 2018 10:20PM Answer ✓

    In Package1, click on SCN2 and click on ADDITIONAL PARAMETERS, there you need to add VAR-A and VAR-B as additional parameters. Refer blog which mentioned in above thread.

    Regards,

    Pavan

Answers

  • Pete_Scott
    Pete_Scott Member Posts: 132
    edited Aug 24, 2018 4:58AM

    You say Variable C is refreshed - have you tried setting it instead?  On the Set Variable option of the package you could enter the two variables to combine - you need qualify the variables with the project name

    Also are both A and B of the same data type?

  • 3551278
    3551278 Member Posts: 10
    edited Aug 24, 2018 5:25AM

    It doesn't seem to work by setting variable C either.

    I still get the error  "Variable has no value: PROJECT.VARIABLE_A"

    Both variables are text.

    The whole process works when I am setting the variable A and launching my package manually.

    It doesn't work when i'm passing the variable A value with the startscen command.

  • Pavan8u
    Pavan8u Member Posts: 278 Silver Badge
    edited Aug 24, 2018 5:36AM

    While generating Scenario, have you selected VAR A as startup parameter?

    Regards,

    Pavan

  • 3551278
    3551278 Member Posts: 10
    edited Aug 24, 2018 5:44AM

    I think so, VAR A is INTERFACES.PAIE_XINT_MOIS in the screenshot below.

    pastedImage_0.png

    Pierre-Yves

  • Pavan8u
    Pavan8u Member Posts: 278 Silver Badge
    edited Aug 24, 2018 5:53AM

    I tried it in my pc and it is working fine.

    In Var_c I wrote query like

    SELECT '#PAVAN.var_a'||'#PAVAN.var_b' from dual.

    Please check whether you are using # before variable name or not. Please check Project name as well.

    Regards,

    Pavan

  • 3551278
    3551278 Member Posts: 10
    edited Aug 24, 2018 6:09AM

    Sorry i was no specific enough.

    I am encapsulating a scenario in another scenario.

    In scenario 1 I declare VAR A (INTERFACES.PAIE_XINT_MOIS) and set VAR B (INTERFACES.PAIE_XINT_SOC_LIB)

    Then I call scen 2 and refresh  VAR C (INTERFACES.PAIE_XINT_CHEMIN) using the following query :

    pastedImage_0.png

    If I try refreshing VAR C in the first scenario, it works fine.

    It is not working when doing it in scenario 2

    Pierre-Yves

  • Pavan8u
    Pavan8u Member Posts: 278 Silver Badge
    edited Aug 24, 2018 6:28AM

    If I am not wrong, you have one main scenario SCN1 and from SCN1 you are calling SCN2. You have var1 and var2 in SCN1 and var3 in SCN2.

    In order to refresh VAR3 in SCN2 you need to pass var1 and var2 as additional parameters to SCN2.

    Refer this blog for some insight-

    http://odiexperts.com/passing-values-to-odi-variables-in-packagesscenarios/

    Regards,

    Pavan

  • 3551278
    3551278 Member Posts: 10
    edited Aug 24, 2018 6:45AM

    You are right.

    VAR A and B are declared in SCN2 before refreshing VAR C.

    pastedImage_0.png

    Therefore they are passed as startup parameters.

    The whole thing works when VAR A is set manually in SCN1

    But it doesn't work anymore when VAR A is passed with starscn command.

    I think the solution might be to write the value of VAR A in a temporary table and use this table for queries.

    Pierre-Yves

  • Pavan8u
    Pavan8u Member Posts: 278 Silver Badge
    edited Aug 24, 2018 10:20PM Answer ✓

    In Package1, click on SCN2 and click on ADDITIONAL PARAMETERS, there you need to add VAR-A and VAR-B as additional parameters. Refer blog which mentioned in above thread.

    Regards,

    Pavan

  • 3551278
    3551278 Member Posts: 10
    edited Sep 7, 2018 7:07AM

    Thanks a lot Pavan, it did the trick, indeed.

    Have a nice day.

    Pierre-Yves

This discussion has been closed.