我正在尝试使用直接在变量上的表达式在运行时将一些SBYTE类型的变量设置为null。变量的范围限定为控制流。
为什么变量求值为0而不是null?如何将其设置为null?
答案 0 :(得分:2)
这是因为SSIS变量不能是NULL
。奇怪的是,我在documentation中找不到明确表示他们不能NULL
的任何内容,只是说
用户定义变量的值可以是文字或表达式
但是(旧的)Microsoft blog entry说“如果SSIS变量支持NULL值......”和Professional Microsoft SQL Server 2012 Integration Services书籍says:
在SSIS中,变量不能设置为
NULL
。相反,每个变量数据 type在没有值的情况下保持默认值。
事实上,如果你只评估NULL(DT_UI1)
,你会得到零;评估NULL(DT_BOOL)
会给False
;评估NULL(DT_DATE)
会给12/30/1899 12:00:00 AM
。
使用表达式将变量设置为NULL
也不起作用:如果您创建Int32
变量,请将EvaluateAsExpression
设置为True
并输入值NULL(DT_UI4)
然后你得到错误“属性值无效”,详细消息“NULL(DT_UI4)不是Int32的有效值”。