为什么使用表达式的数据类型SByte的变量求值为0?

时间:2013-04-25 18:04:51

标签: sql-server-2008 ssis bids

我正在尝试使用直接在变量上的表达式在运行时将一些SBYTE类型的变量设置为null。变量的范围限定为控制流。

为什么变量求值为0而不是null?如何将其设置为null?

enter image description here

1 个答案:

答案 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的有效值”。