在SSIS中使用查找中的变量

时间:2014-08-21 13:57:38

标签: sql loops ssis lookup

我正在尝试循环执行一些数据流任务。对于每个循环,它将日期变量增加1(存储在变量中)。在数据流任务中,我有一个lookup任务,该任务应该使用作为sql语句的一部分递增的变量,如下所示:

Select
    *
From
    Table
Where
    Date = @[User::Date]

但这不起作用,我收到了这个错误:

Must declare the scalar variable "@".

尝试将此变量放入lookup的sql中的任何帮助都将非常感激。我还尝试在lookup中使用参数,但也会收到错误消息,说明参数不足

2 个答案:

答案 0 :(得分:3)

在查找之前使用派生列,并将新列的值设置为变量。然后在查找转换中,您可以使用新的派生列和表中的日期列进行直接映射,并查找预期的列。

在您的情况下,由于您的要求的性质,您似乎需要使用SQL。因此,在将缓存模式更改为部分缓存后,转到高级选项卡并将SQL更改为 -

Select * 
From Table 
Where Date <> ?

单击参数按钮并将派生列映射到Parameter0。 因此,查找匹配输出现在基本上会为您提供与变量@ [User :: Date]设置的派生列不匹配的所有日期。

答案 1 :(得分:0)

您可以在派生列组件中使用逻辑表达式来检查日期并将bool值分配给新列,然后使用条件拆分来解析记录并修改数据流。

图片:派生列表达式示例

enter image description here