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;
答案 0 :(得分:0)
关于您的匿名块,您应该这样重写它:
您可以使用odi包变量以更多方式“播放”。例如,您可以创建一个变量,如果满足第一个条件,则返回YES,如果满足第二个条件,则返回NO。您的变量将执行一条sql语句并返回一个值(仅一行,一列),然后您将对其求值并选择要执行的方案。
希望它有用
编辑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程序,然后为每个任务检查下一个选项。保存重新生成方案(如果有方案):
编辑3:
在哪里可以看到Operator中的代码: 双击会话>选择您要查看的任务>展开它>双击>代码