Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 为什么使用表达式的数据类型SByte的变量的值为0?_Sql Server 2008_Ssis_Bids - Fatal编程技术网

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

Sql server 2008 为什么使用表达式的数据类型SByte的变量的值为0?,sql-server-2008,ssis,bids,Sql Server 2008,Ssis,Bids,我试图在运行时直接使用变量上的表达式将一些SBYTE类型的变量设置为null。变量的作用域是控制流 为什么变量的计算结果是0而不是null?如何将其设置为空 这是因为SSIS变量不能为NULL。奇怪的是,我在中找不到任何明确表示它们不能为NULL,它只是说 用户定义变量的值可以是文字或表达式 但是一个(旧的)说法是“如果SSIS变量支持空值…”这本书: 在SSI中,变量不能设置为NULL。相反,每个变量都包含数据 类型在没有值的情况下保留默认值 事实上,如果你只计算NULL(DT_UI1)你会得

我试图在运行时直接使用变量上的表达式将一些SBYTE类型的变量设置为null。变量的作用域是控制流

为什么变量的计算结果是0而不是null?如何将其设置为空


这是因为SSIS变量不能为
NULL
。奇怪的是,我在中找不到任何明确表示它们不能为
NULL
,它只是说

用户定义变量的值可以是文字或表达式

但是一个(旧的)说法是“如果SSIS变量支持空值…”这本书:

在SSI中,变量不能设置为
NULL
。相反,每个变量都包含数据 类型在没有值的情况下保留默认值

事实上,如果你只计算
NULL(DT_UI1)
你会得到零;计算
NULL(DT_BOOL)
得到
False
;计算
NULL(DT\U日期)
给出
12/30/1899 12:00:00 AM


使用表达式将变量设置为
NULL
也不起作用:如果创建
Int32
变量,将
evaluatesExpression
设置为
True
并输入值
NULL(DT_UI4)
,则会出现错误“属性值无效”,并显示详细消息“NULL(DT_UI4)”不是Int32的有效值。“

很好的解释。我想我可以删除需要设置为null的变量,并在SQL语句中对其进行操作,对吗?是的,如果可能的话,我会将逻辑保留在SQL中(不知道包逻辑是什么)。就我个人而言,除非绝对必要,否则我尽量避免使用表达式,因为构建和调试表达式非常麻烦,而且很容易被忽略(“忘记”可能更准确)。但是它们肯定有它们的用途,所以不要犹豫,在它们有用的地方使用它们。