我试图在运行时使用直接在变量上的表达式将一些 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 的有效值”。