SSIS变量属性中EvaluateAsExpression设置的作用

我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示:

在定义SSIS变量的时候可以使用固定值(如上图中的变量Number),也可以是使用表达式(如上图中的变量Sql),使用表达式的时候可以让变量去使用另一个变量的值,比如下图是变量Sql的表达式,其中就使用了变量Number的值:

顺便说一下,本文上面的截图都是基于SqlServer2012的SSIS包,也就是VisualStudio 2010的SSIS包,其实也VisualStudio 2008的SSIS包的变量也可以使用表达式,不过VisualStudio 2008需要打开VisualStudio的属性窗口后才能定义SSIS变量的表达式,如下图所示先在SSIS变量窗口选中要使用表达式的变量(变量MID_MonthsOver_SQL)

然后从视图(View)下拉菜单中选中属性窗口(Properties Window)

然后在属性窗口中就可以像在VisualStudio 2010中一样编辑变量的表达式(Expression)了

不管是在VisualStudio 2010还是VisualStudio 2008的SSIS变量上,都有一个设置叫EvaluateAsExpression,这个设置可以在变量的属性窗口(Properties Window)中可以看到(怎么打开变量的属性窗口上面已经说了),如下图所示:

默认情况下SSIS变量的EvaluateAsExpression是为False的,但是一旦你为SSIS变量使用了表达式(Expression),这个设置就会被自动改变为True,当然你也可以手动改回False,那么EvaluateAsExpression为True和False的时候有什么不同呢?

实际上EvaluateAsExpression设个设置只有在SSIS变量使用表达式(Expression)的时候才会起作用,它的作用是在获取变量值的时候是否动态计算变量的表达式。

举例说明,下图中我们设置了一个String类型的SSIS变量Sql,它的值依赖于Int32类型的变量Number,Number的初始值为0

然后我们在SSIS包的控制流中定义了三个Sequence Container(Sequence Container,Sequence Container 1,Sequence Container 2),每一个Sequence Container都会使得变量Number的值先加1,然后输出变量Sql的值

如果变量Sql的EvaluateAsExpression为True,三个Sequence Container的输出结果为下面所示:

但是如果变量Sql的EvaluateAsExpression为False,我们运行SSIS包会得到下面三个输出结果:

这说明当变量Sql的EvaluateAsExpression为True时,每当在SSIS包中获取变量Sql的值时都会动态地去计算它的表达式(Expression),用表达式的最新结果作为变量Sql的值。而当变量Sql的EvaluateAsExpression为False时,其表达式只会为变量Sql提供一个初始值,在SSIS包中获取变量Sql的值时每次都返回的是这个初始值,而不会重新去计算变量Sql的表达式。

时间: 2024-10-10 13:43:22

SSIS变量属性中EvaluateAsExpression设置的作用的相关文章

JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。

在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用. 首先右键点我的电脑.打开属性.然后选择"高级"里面的"环境变量",在新的打开界面中的系统变量需要设置三个属性"JAVA_HOME"."path"."classpath",其中在没安装过jdk的环境下.path属性是本来存在的.而JAVA_HOME和classpath是不存在的. 一:点"新建",然后在变量名写上JAVA

JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。--------转载

JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用. 今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找,找到遍文章,觉得不错,就留下了.      仅供记录学习.转自:http://bbs.tech.163.com/bbs/tech_0ik1/147645925.html 在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用. 首先右键点我的电脑.打开属性.然后选择“高级”里面的“环境

iOS中的成员变量,实例变量,属性变量

在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译器从GCC转换为LLVM(low leve

CSS自定义变量属性——像less,sass那样在css中使用变量(译)

介绍 通常大型文档或者应用(甚至小规模的文档或应用)会包括大量的CSS.在这些CSS文件中通常会有大量相同的数据:例如,一个网站可能用了一个颜色主题并反复用三到四种颜色贯穿始终.改动这些数据会非常困难并且容易出错,因为它零散地分布在CSS文件(甚至多个文件)中,可能无法使用寻找替换实现. 于是CSS自定义变量属性应运而生,它允许用户使用特定语法定义相关变量,并在一定范围内反复使用var()引用,改动这些变量,引用这些变量的地方的CSS也将对应地发生变化. 亲测:ios9环境下没有效果,ios9不

bash中通过设置PS1变量改变提示符颜色

参考 <Prompt Magic> ubuntu初始时bash提示符的颜色同程序输出的颜色相同,当大量有输出时,找到输出信息开始的地方往往很费劲.如果把提示符的颜色变成更为醒目的颜色,那么就很容易定位输出信息开始处.bash中想要改变提示符颜色可以通过PS1变量的值来设置,如果将其放入用户对应目录下的.bashrc文件中,则用户打开bash时自动更改颜色.这里,我将提示符改成绿色:    PS1="\[\e[32m\]\[email protected]\h:\w\$ \[\e[0m

关于 Spring 中使用 context:property-placeholder 属性占位符设置配置文件

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 该配置文件中以键值存储,键在 spring 配置中可以用 ${} 来引用,而值在配置文件中来配置.具体键变量的生命周期,可能是当前上下文,需求证.

MVC5中Model设置属性注解

ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数据显示(在View层显示相应的数据) 数据注解相关的命名空间如下: System.ComponentModel.DataAnnotations System.ComponentModel.DataAnnotations.Schema System.Web.Mvc System.Web.Securit

Python中父类和子类间类属性(非实例属性)的设置获取的传递

前几天做一个项目,遇见类似这样一个问题.父类是个公用类,很多子项目中都运用到了,而子类也要作为一个基本类在该项目中的很多地方都要用到,但是的原始父类里面有些类属性(注意这里是类属性,不是实力属性).在程序运行时候要进行重新设置. 背景:Python中父类的类属性,类方法,实力属性都能够被子类继承,实力属性的再设置很简单,当然为了控制类属性的访问权限(Python中不能完全实现控制),也可以用@preproty装饰符优化和控制实力属性的设置,父类的类属性被子类继承,可以很容易的获得父类属性的内容,

css中display设置为table、table-row、table-cell后的作用及其注意点

html: <div class="table"> <div class="row"> <div class="cell">内容内容内容内容内容内内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div> <