一、变量简介

变量存储的是一个单一的值,既可以是数字,也可以是字符或者日期。不能为数组。

ODI的变量分为两种,全局变量和项目变量。 顾名思义,项目变量定义的变量只可以在本项目中使用,其它项目无法调用此变量。而全局变量定义的变量可被任何项目所引用。

变量可设置为一个单一的缺省值,或者由SQL赋值,在每次调用的时候刷新,生成最新的值。

二、变量的创建

先创建一个项目(ODI),打开后可看见”变量”标签。

在上面右键选择新建后,弹出窗口如下:

定义页中填入变量的名字,数值类型 ,保留历史记录有三种选项:缺省是最新值,还有所有值、无历史记录

最新值表示ODI将变量的最新值存入ODI元数据管理库中。

所与值表示ODI将变量的所有值变化存入元数据管理库中,可用于跟踪和调试。

无历史记录表示变量的最新值只存在与内存中,ODI不进行存储。

安全值:选中时,变量不会被记录。对于包含密码或者敏感数据的变量,选中时保留历史记录自动变为无历史记录

默认值定义了变量的缺省值。

切换到刷新页,可定义变量的刷新语句,从而在每次调用时,可获取不同的数值。

如上所示,在刷新页,首先要选择取变量的查询语句的数据源,例如ODI_TAG

然后编写select语句,

SELECT MAX(LAST_UPDATE_TIME) FROM "ODI_TAG"."DEPT"

完成后应用、保存。

点击验证按钮

点击刷新,会立即执行查询,历史记录标签页,根据保留历史记录2种选项不同,保存了最新值或者所有的历史记录。

这样,一个项目变量就已经创建完成。

三、变量使用

变量可用的地方很多,包括接口(Interface),程序(Procedure),包(Package)甚至模型(module)中的数据源等等。

3.1 变量作用域(scope)

使用变量MY_VAR的例子

· #MY_VAR: 必须在一个项目中

· #MY_PROJECT_CODE.MY_VAR: 明确指定项目名称前缀,避免有同名的全局变量

· #GLOBAL.MY_VAR: 参照全局变量.

· 使用 ":"代替"#"

You can use the variable as a SQL bind variable by prefixing it with a colon rather than a hash. However this syntax is subject to restrictions as it only applies to SQL DML statements, not for OS commands or ODI API calls and using the bind variable may result in performance loss. It is advised to use ODI variables prefixed with the '#'character to ensure optimal performance at runtime.

区别:

1. 冒号(:)只适用于SQL DML,不适用于OS命令 or ODI API,而使用#(井号)适用于OS commands, SQL, and ODI API calls.

2. 使用冒号(:)可能会损失性能。

3. 使用方法的不同:TOWN_NAME = :GLOBAL.VAR_TOWN_NAME,不需要引号括起来 TOWN = '#GLOBAL.VAR_TOWN' 需要引号括起来

When you reference an ODI Variable prefixed with the ':' character, the name of the Variable is NOT substituted when the RDBMS engine determines the execution plan. The variable is substituted when the RDBMS executes the request. This mechanism is called Binding. If using the binding mechanism, it is not necessary to enclose the variables which store strings between delimiters (such as quotes) because the RDBMS is expecting the same type of data as specified by the definition of the column for which the variable is used.

For example, if you use the variable TOWN_NAME=:GLOBAL.VAR_TOWN_NAME the VARCHAR type is expected.

When you reference an ODI variable prefixed with the "#" character, ODI substitutes the name of the variable by the value before the code is executed by the technology. The variable reference needs to be enclosed in single quote characters, for example TOWN = '#GLOBAL.VAR_TOWN'. This reference mode of the variable works for OS commands, SQL, and ODI API calls.

oracle odi 变量,ODI----Variables相关推荐

  1. Oracle 绑定变量 详解 .

    之前整理过一篇有关绑定变量的文章,不太详细,重新补充一下. Oracle 绑定变量 http://blog.csdn.net/tianlesoftware/archive/2009/10/17/467 ...

  2. system var mysql_MySQL 系统变量(system variables)

    MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等.这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动 ...

  3. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)

    第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: · 查询语句处理 · DML语 ...

  4. MySQL 系统变量(system variables)

    MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等.这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动 ...

  5. oracle系统user$,Oracle 系统变量函数介绍

    Oracle函数多种多样,系统变量函数就是其中之一,下面就为您介绍三种最常见的系统变量函数,希望对您学习Oracle能有所帮助. Oracle系统变量函数: (1)SYSDATE 该函数返回当前的日期 ...

  6. java绑定变量怎么加_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量

    在JAVA中的SQL 语句的编写方面,没有使用ORACLE 绑定变量,很大程度上降低了数据库的性能,表现在两个方面: 1.SQL语句硬分析(Hard Parse)太多,严重消耗CPU资源,延长了SQL ...

  7. oracle常用系统变量,Oracle环境变量

    一.Oracle环境变量 Oracle数据库的安装和运行都需要环境变量,常用的Oracle环境变量如下. 1.ORACLE_HOME Oracle软件安装的根目录,存放了Oracle的可执行程序.管理 ...

  8. Oracle环境变量

    文章目录 一.Oracle环境变量 1.ORACLE_HOME 2.ORACLE_BASE 3.ORACLE_SID 4.NLS_LANG 5.PATH 6.LD_LIBRARY_PATH 7.CLA ...

  9. Oracle绑定变量分级(Bind Graduation)

    Oracle绑定变量分级(Bind Graduation) 绑定变量分级(Bind Graduation)是指Oracle在PL/SQL代码中会根据文本型绑定变量的定义长度而将这些文本型绑定变量分为四 ...

  10. Python中的虚拟变量(dummy variables)

    虚拟变量(dummy variables) 虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量.非数量因素可能产生的影响. ① 离散特征的取值之间有大小的意义 例如:尺寸(L.XL.XXL) 离散 ...

最新文章

  1. 7.3. UUID()
  2. POJ 1260 Pearls(DP)
  3. 深度学习用于图片的分类和检测总结
  4. MAUI中构建跨平台原生控件实现
  5. Delphi+GDI
  6. 总结Cnblogs支持的常用Markdown语法
  7. python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
  8. eclipse(mac)启动配置-设置jdk路径
  9. 易语言单窗口单ip软件源码_梦幻西游怎样多开ip转金?老玩家的十大转金秘籍奉上...
  10. 基于Unity的极乐净土/others MMD动画制作
  11. JAVA中的getBytes方法
  12. 修改复选框默认的样式
  13. 一枚菜鸟前端工程师月度工作总结
  14. WORD出现VBE6EXT.OLD不能被加载的问题
  15. 解决sqllite的'unable to open database file'错误
  16. 考研数据结构之数组(5.1)——练习题之移动数组所有非零元素到数组前端(C表示)
  17. 电工电子电力拖动及自动化技术考核实训台QY-DG800D
  18. NOIP 2015 d1t2 信息传递
  19. 运维生涯中总有一次痛彻心扉的rm命令
  20. Java 后端自学之路之小白

热门文章

  1. kali渗透综合靶机(九)--Typhoon靶机
  2. 聚沙成塔——VBA术语 (VBA Glossary)
  3. 学phyton第二天
  4. ConneR and the A.R.C. Markland-N
  5. Android知识体系思维导图
  6. php的seeder是什么,Laravel学习笔记之Seeder填充数据小技巧
  7. 现代大学英语精读第二版(第五册)学习笔记(原文及全文翻译)——12 - The Indispensable Opposition(不可缺少的反对派)
  8. 只有10分,5分,2分,1分的硬币;顾客付款x分,商品价格y分。如何找零所使用的硬币最少(递归实现)
  9. Roaring Bitmap 原理及实践
  10. NEO智能合约开发(二)再续不可能的任务