我的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
共享参数
答案 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;