2

Visual Studio 2010 内で SSIS を使用しています。パッケージは次のようになります。OLE DB ソース -> マルチキャスト -> 7 OLE DB コマンド

上記の 7 つの OLE DB コマンドの 6 番目には、次のものが含まれます。

SELECT r.DeviceID 
FROM   hub.ResolveDeviceInstanceToDevice r 
WHERE  r.DeviceInstanceID = ?
       AND r.DatasetID = ?

返された DeviceID を 7 番目の OLE DB コマンドで使用したいと考えています。これはできますか?どのように?そうでない場合、どうすればよいですか?

OLE DB コマンドの 7 つすべてを 1 つのマルチキャストの下に配置しました。これは、それらのいくつかが OLE DB ソースからの同じ出力を使用しているためです。

ETL を介してこれを行うことが優先されるため、これにはストアド プロシージャを使用しないことにしました。しかし、これが複雑すぎる場合は、ストアド プロシージャへの移行を検討します。

4

3 に答える 3

2

OLE DB コマンドでこれを行うべきではありません。代わりに、ルックアップ タスクを使用してこれを実現する必要があります。

  1. コマンドを実行しているデータベースへのルックアップの接続を設定します。
  2. そのクエリをに設定します

    r.DeviceID、r.DeviceInstanceID、r.DataSetID FROM hub.ResolveDeviceInstanceToDevice r を選択します。

  3. 列で、ソースの DeviceInstanceID および DataSetID 入力を適切なルックアップ列に結合します。

  4. DeviceID を出力列として追加します。

これで、この値を別の OLE DB コマンドで使用できます。

于 2013-03-12T18:27:45.893 に答える
1

でそれは不可能だと思いますselect。ストアドプロシージャがあれば、次のことができます。

exec ? = GetDeviceId ?, ?

于 2013-03-12T12:31:54.943 に答える