SSIS变量由其他未更新的变量定义

时间:2013-12-02 15:41:58

标签: sql variables ssis

在我的SSIS包中,我有一个变量(称为SQL),它包含一个动态创建的查询 此查询的值由运行时的其他2个变量定义。

由于我无法弄清楚的原因,变量值在运行时没有变化:-(。

我使用断点和监视来检查SQL变量和2个定义变量的确切值。我看到的是,2个变量具有我期望的值,但SQL变量保留了它的原始版本(并最终以这种方式运行)。

这是SQL变量的定义:

"select *
from tbl1
where Date_Created>= to_date('"+
reverse(right(reverse(
(DT_WSTR, 20 )DATEADD( "Month", -3, (DT_DATE)@[User::StartDate])),10))
 +"', 'YYYY-MM-DD')
and 
Date_Created <=  to_date('"+
reverse(right(reverse(
(DT_WSTR, 20 )DATEADD( "Month", 3, (DT_DATE)@[User::EndDate])),10))
 +"', 'YYYY-MM-DD')
"

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,最终在我的表达式中出现了类型转换问题。

用户变量“tableName”是String类型。用户变量“myID”是Int32类型。用户变量“theQry”是String类型。 EvaluateAsExpression = true,这是我的表达式:

"select *
from "+ (DT_STR, 5,1252) @[User::tableName] +
"WHERE id = "+ (DT_STR, 5,1252) @[User::myID]

我可以在Watch面板中看到“tableName”和“myID”的值正在更新,但“theQry”从未这样做过。

一旦我删除了用户变量“tableName”上的强制转换功能,“theQry”就开始更新了。

"select * from "+ @[User::tableName] + "WHERE id = "+ (DT_STR, 5,1252) @[User::myID]