You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ODI的Java代码过程中将ODI变量值赋值给Java变量

在Oracle Data Integrator(ODI)中把ODI变量值赋值给Java变量的正确方法

要在ODI的Java代码中获取ODI变量MY_ODI_VAR的值并赋值给Java变量mystr,你可以按以下两种方式实现:

方法一:直接使用ODI变量替换语法(推荐)

ODI引擎会在执行Java代码前自动解析#<变量名>格式的变量,前提是你确保以下几点:

  • 代码块是ODI中类型为Java的步骤(比如Procedure里的Java步骤)
  • MY_ODI_VAR变量已正确定义(项目/全局级均可),且在当前执行上下文中有有效值

正确代码示例:

<?
String mystr = "#MY_ODI_VAR";
out.print(mystr);
?>

如果之前用这段代码没生效,检查步骤类型是否为Java,或者变量是否在当前上下文可见(比如是否是当前项目的变量,有没有被正确加载)。

方法二:通过ODI API获取变量值

如果需要更灵活的变量操作(比如动态获取不同变量),可以使用ODI的Java API来读取变量值,代码如下:

<?
// 导入ODI相关类
import oracle.odi.core.api.OdiInstance;
import oracle.odi.core.api.OdiVariableManager;
import oracle.odi.domain.variable.OdiVariable;

// 获取ODI实例和变量管理器
OdiInstance odiInstance = OdiInstance.getInstance();
OdiVariableManager varManager = odiInstance.getTransactionalEntityManager().getOdiVariableManager();

// 根据变量名和工作区查找变量
OdiVariable myVar = varManager.findOdiVariableByName("MY_ODI_VAR", odiInstance.getSecurityManager().getDefaultWorkspace());

// 获取变量值并赋值给Java变量
String mystr = myVar.getVariableValue().getValue().toString();
out.print(mystr);
?>

你之前尝试的错误原因

你用的<% %>是JSP模板语法,ODI的Java代码块不支持这种语法,所以会被当作普通字符串输出;而直接用"#MY_ODI_VAR"没生效,大概率是代码块类型不对,或者变量不在当前执行上下文里。

内容的提问来源于stack exchange,提问作者Rehan Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:37:12