ExecuteSQL任务中多个参数的一个变量

时间:2013-01-09 13:56:22

标签: ssis

我的ExecuteSQL Task中有多个UPDATE语句。每一个都依赖于一个可变的,例如MyId

UPDATE TABLE_A SET COL_A={Something} WHERE ID=?
UPDATE TABLE_B SET COL_B={SomeTHing} WHERE ID=?

此查询将MyId变量作为参数。

我需要拥有与我的更新语句一样多的参数吗?或者有一种方法可以在我的ExecuteSQL任务中定义one共享参数

2 个答案:

答案 0 :(得分:7)

试试这个:

DECLARE @id int

SELECT @id = ?

UPDATE TABLE_A SET COL_A={Something} WHERE ID=@id
UPDATE TABLE_B SET COL_B={Something} WHERE ID=@id

答案 1 :(得分:3)

另一个选项是将Connection Manager从OLE更改为ADO.NET提供程序类型。 ADO.NET连接管理器使用named parameters而不是?,因此您可以重复使用它们,而不是在映射选项卡中处理序数位置。我们经常有2个指向同一个数据库,一个用于数据流类型组件的OLE和一个用于执行SQL任务的ADO.NET。

UPDATE TABLE_A SET COL_A={Something} WHERE ID=@id;
UPDATE TABLE_B SET COL_B={SomeTHing} WHERE ID=@id;