2012-07-11 59 views
0

本质上来说,我是一个带有Execute SQL语句的SSIS pkg,它根据某些表值动态地编写REPLACE函数。 (如更换(REPLACE(Col1中, “*”, “”), “@@@”, “”)在派生列转换中使用变量作为表达式SSIS

的ExecuteSQL结果被投入变量@Cleanse

在我的派生列转换林试图调用@User :: Cleanse作为表达式来替换DataFlow中Col1的值

结果似乎是拉@Cleanse的结果并将其作为字符串值使用,而不是将其应用为REPLACE函数

当调试@Cleanse值似乎是在字符串中放\,我不认为NK应该的问题,因为它似乎是appliying这为其他值不会有问题

结果是跑出来的CSV,这是把

当“REPLACE(REPLACE(Col1中”在Col1中

*”在col2的

)在COL3等等等等

我怎样才能获得派生列转换到“看”的变量函数,而不是一个字符串值?

提前

回答

1

非常感谢设置变量的EvaluateAsExpression属性True

然而,结合变量作为参数使用Variable Mappings窗格中执行SQL任务的SQL查询可能是一个更好的解决方案

+0

你是不是想实际表达传递到您的派生列转型?也就是说,就我所知,不可能的。 – 2012-07-12 09:46:47

+0

Hi @Jeroen 好吗?也许我错过了什么 如果我将var设置为Evaluate as Expression我需要使用编辑器编写表达式....所以为了这些目的,我创建了带有User :: Cleanse表达式的@ Cleanse2 这似乎是给我同样的结果...即将字符串拉过来作为字符串,不作为REPLACE语句使用。 – Nique 2012-07-12 09:46:53

+0

Ahhhhh 是的我是 实际的表达式由ExecuteSQL任务编译和证明。所以reult被放在变量= REPLACE(REPLACE(COL1,“*”,“”),“@@@”<“”) 然后我调用派生列转换的表达式中的变量 – Nique 2012-07-12 09:49:16