在我的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')
"
有什么想法吗?
答案 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]