我试图在运行时使用直接在变量上的表达式将一些 SBYTE 类型的变量设置为 null。该变量的范围是控制流。
为什么变量评估为 0 而不是 null?如何将其设置为空?
我试图在运行时使用直接在变量上的表达式将一些 SBYTE 类型的变量设置为 null。该变量的范围是控制流。
为什么变量评估为 0 而不是 null?如何将其设置为空?
这是因为 SSIS 变量不能是NULL
. 奇怪的是,我在文档中找不到任何明确说明它们不可能的NULL
内容,它只是说
用户定义变量的值可以是文字或表达式
但是(旧的)Microsoft 博客条目说“如果 SSIS 变量支持 NULL 值......”并且Professional Microsoft SQL Server 2012 Integration Services书说:
在 SSIS 中,变量不能设置为
NULL
. 相反,每个变量数据类型在没有值的情况下维护一个默认值。
事实上,如果你只评估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) is不是 Int32 的有效值”。