通过PL / SQl过程调用odi Mappig

时间:2019-08-06 05:22:04

标签: plsql oracle-data-integrator

enter image description here enter image description here我在下面提到了一个匿名块,我想用odicenscenn代替execute立即执行语句。

使用odi过程完成该操作的任何方法。如果我可以使用任何odi api或odi utilities命令替换它。

即:

  

OdiStartScen“ -SCEN_NAME = LD_T_RD_ACCOUNT_POC”“ -SCEN_VERSION = 001”   “ -CONTEXT = GLOBAL”“ -LOG_LEVEL = 6”“ -AGENT_CODE = OracleDIAgent1”   “ -SYNC_MODE = 1”;

DECLARE

   VAR            VARCHAR2(2000);
   VAR2           DATE;

BEGIN
   BEGIN
         Select XYZ INTO VAR
         From DUMMY
         Where ID= 2; end;

       BEGIN

          l_exec_sql:= 'INSERT INTO DUMMY VALUES('1')';

      IF VAR LIKE 'XY%' THEN
       execute immediate(l_exec_sql); --Replace it with odi scenario
      ELSE
       IF FUNCTION_F(VAR) THEN
          execute immediate(l_exec_sql); --Replace it with odi scenario
       END IF;
      END IF;
 END;

1 个答案:

答案 0 :(得分:0)

关于您的匿名块,您应该这样重写它:

  • 创建一个新的ODI包;
  • 在var中创建一个名为VAR(或您喜欢的方式)的新变量,将所需内容与适当的逻辑模式配对;
  • 打开新创建的ODI包,拖放变量并选择“刷新变量类型”(见下图);
  • 在拖放变量之后,再次选择它并拖放,这一次选择类型Evaluate变量,然后编写您的第一个条件(请参见下图);
  • 然后拖放所需的ODI场景;

您可以使用odi包变量以更多方式“播放”。例如,您可以创建一个变量,如果满足第一个条件,则返回YES,如果满足第二个条件,则返回NO。您的变量将执行一条sql语句并返回一个值(仅一行,一列),然后您将对其求值并选择要执行的方案。

希望它有用

EVALUATE VARIABLE refresh variable

编辑1:

您可以从ODI Procedure中调用ODI方案,但是对于应调用该方案的任务,技术应为ODI工具。

对于您的示例,您可以这样做: *在您的plsql块中,您有“-用odi场景替换”,放置此替换变量:“” ;在第二个变量评估上,放置“” 等; *在相同的过程中,执行另一个任务并编写如下内容:

<$
if (var.equals("call secenario 1") {
$>
OdiStartScen "-SCEN_NAME=NAMEOFSCENARIO" "-SCEN_VERSION=001"
<$
}
$>

此新任务应具有技术:ODI工具。

您不能在与运行plsql过程相同的任务中调用场景,因为PLSQL过程将需要Technology Oracle,而调用场景将需要ODI工具。

编辑2:

要查看运算符中的值,请转到ODI程序,然后为每个任务检查下一个选项。保存重新生成方案(如果有方案):

CHECK LOG FINAL COMMAND

编辑3:

在哪里可以看到Operator中的代码: 双击会话>选择您要查看的任务>展开它>双击>代码

enter image description here