SSIS通过SQL执行任务传递Null值

时间:2014-06-10 22:46:32

标签: sql-server variables ssis

UPDATE Addresses 
SET CountyCode = Null, 
    UPDATED_TIME = ?,
    UPDATED_BY = ?
WHERE (Country = ? AND Town = ?) 
  AND CONVERT(VARCHAR(10), CREATED_TIME, 112) = '20140602'

有人可以告诉我为什么上面的代码无法从我的SSIS执行SQL任务组件执行。

我有一个countryCode列(INT),我想将其设置为null但不知何故SSIS不喜欢上面的代码。

我的SSIS包中有一个int变量,但它不允许空值,因此默认为0但我不想传递0值,因为0用于其他东西。

有没有办法可以使用存储过程传递空值,或者理想情况下不使用转换组件

1 个答案:

答案 0 :(得分:0)

SSIS的内置变量不支持可为空的类型。因此,创建整数值时,默认情况下将其设置为0。

对于您的情况,我将CountryCode设置为-1(0在这里适用于Countrycode,但是将来它可能代表一个项目,更安全地使用负值进行处理)并像这样更新表。然后,在通过使用SELECT t1.id,(SELECT SUM(salary) FROM T tt where tt.id = t1.id) salary FROM T t1 获取表并设置OLE DB Command的语句之后,我将在Data Flow中使用OLE DB Source,如下所示:

OLE DB Command