我有一系列非常相似的任务:
选择a,b FROM c
在另一个表中查找并更改列b中的值。
将新值保存回c,如果不匹配,则将结果发送到错误表。
这部分非常简单,并在此处说明:
Source ==> Lookup =match=> SQL Update command
=No match=> SQL Save Error command
(希望你理解我的意思 - 但它有效!)
我现在必须多次重复这一点,我的source-sql会发生变化。所以我想要做的是在Source前面插入一个Script Component并设置我的User :: Sql变量,如:
Variables.Sql = "SELECT d, e FROM f"
以上所有内容都包含在数据流中。当我创建了一个时,我可以复制那个,只更改脚本中的Sql变量,然后它应该全部工作。
我的问题是:当我插入脚本命令时,它会询问我是否是Source,Destination或Transscript脚本。并且通过仅设置变量,它不会产生任何输出行,也无法连接到我的源。
任何人都知道如何做到这一点?
(我已经简化了上面的内容。我实际上想要更新多个变量并在我的Source,Lookup和Error更新中使用它们 - 因此只更改初始Source中的SQL脚本并不简单!但是能够做到这一点,我将能够实现我想要的: - ))
答案 0 :(得分:4)
在执行数据流之前,应该在控制流中设置包含SQL查询的变量。
然后,您需要将该变量用作数据流中的表达式。您可以参数化查找中使用的查询或数据流的任何其他参数。
如果您的数据流实际上始终具有相同的结构,您甚至可以生成查询列表并在循环中调用数据流任务,从而防止重复执行相同的任务。