SSIS 什么是变量,什么是Expression 以及 在 Ole DB Source/OLEDB数据源中使用变量 Oracle
变量就是类似于编程语言中的变量,我们可以引用,可以赋值。
目前我所了解的方式,一个是在OLEDBSOURCE中参数变量不写死在控件里面,而是引用定义的控件值。
一个是在rowcount控件中对变量进行赋值,又或者在execute SQL task中进行参数绑定以及结果赋值
又或者在Script task中获取变量值或者修改变量值
注意各个变量在同一个 dtsx中 是否有不同Scope 同名的现象,这种极易造成赋值异常,从而显示失败。所以建议尽量使用不同名称的变量
第一个 新增变量
在 Control Flow 页面空白地方右击 Variables
输入name,默认Scope是这个dtsx文件的名称,也就是说整个dtsx文件都能引用到这个变量。选择数据类型,输入值
如果你想将变量只能在某个控件内使用,那么可以使用move Variable 按钮,调整控件使用的域
Expression稍后再讲,我们先将 OLE DB SOURCE 里面使用 变量
或许有人在网上查询会发现,有的资料显示Data access mode 选择 SQL command,然后SQL里面直接 ? 。再点击右边的parameters即可。
这种方式连接的是SQLserver没问题,但是如果连接的Oracle则会报错,因此我们需要使用一种折中的方法
首先 定义两个个变量
再次新增一个变量 sql,value先空着
选中这一行,在右边的property里面,找到Expression,打开
左侧我们能看到目前定义的变量,选中一个,鼠标左键按住不动,拖拽到下面。
多个变量可通过+ 加号拼接起来,也可以 在变量两边加单引号,
比如 @[User::sql1] + "'" + @[User::sql2] +"'"
点击最下方按钮,会计算拼接后的值,我们可以检查是否是我们想要的
打开OLEDB SOURCE
选择 SQL command from variable。在Variable name 选择自己想要的变量,但是当我们点击预览的时候却报错了,软件提示不识别。
这个时候我们就要选中这个变量,在属性里面修改EvalueAsExpression 设为 TRUE,意思是计算表达式的值
修改后,再测试一下就能正常获取值