2

ExecuteSQL タスク内に複数の UPDATE ステートメントがあります。それぞれが 1 つの変数 (例: MyId) に依存しています

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

このクエリは、MyId 変数をパラメーターとして受け取ります。

Update ステートメントと同じ数のパラメーターが必要ですか、またはoneExecuteSQL タスク内で共有パラメーターを定義する方法がありますか

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

もう 1 つのオプションは、接続マネージャーを OLE から ADO.NET プロバイダー タイプに変更することです。ADO.NET 接続マネージャーは代わりに名前付きパラメーター?を使用するため、マッピング タブで序数の位置を処理する代わりにそれらを再利用できます。多くの場合、同じデータベースを指している 2 つがあります。1 つはデータ フロー タイプのコンポーネント用の OLE で、もう 1 つは 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 に答える