2

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

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

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

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

4

2 回答 2

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
于 2013-01-09T14:34:43.740 回答
3

另一种选择是将连接管理器从 OLE 更改为 ADO.NET 提供程序类型。ADO.NET 连接管理器使用命名参数代替,?因此您可以重复使用它们而不是处理映射选项卡中的序数位置。我们经常有 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;
于 2013-01-09T16:18:39.637 回答