次の方法で共有


DirectRow メソッド

PipelineBuffer から指定された IDTSOutput100 に行を送信します。

名前空間:  Microsoft.SqlServer.Dts.Pipeline
アセンブリ:  Microsoft.SqlServer.PipelineHost (Microsoft.SqlServer.PipelineHost.dll)

構文

'宣言
Public Sub DirectRow ( _
    outputID As Integer _
)
'使用
Dim instance As PipelineBuffer
Dim outputID As Integer

instance.DirectRow(outputID)
public void DirectRow(
    int outputID
)
public:
void DirectRow(
    int outputID
)
member DirectRow : 
        outputID:int -> unit 
public function DirectRow(
    outputID : int
)

パラメーター

説明

DirectRow メソッドは、同じ ExclusionGroup に複数の出力を含むコンポーネントにより呼び出されます。これを使用して、PipelineBuffer 行を指定した出力 (コンポーネント内の特定の出力) に出力します。このメソッドはエラー出力にもエラー以外の出力にも使用できますが、DirectErrorRow メソッドは、行をエラー出力に送信するために使用されます。

同じ除外グループに 2 つの同期出力を持つコンポーネントが、行を特定の出力に出力させず、NextRow メソッドを使用してバッファを次の行に進めると、行は両方の出力に送信されます。

使用例

次の例は、同じ除外グループに 2 つの出力を含むコンポーネントを示します。ProcessInput の間、行は DirectRow メソッドを使用して、いずれかの出力に送信されます。

public override void ProvideComponentProperties()
{
    IDTSInput100 input = ComponentMetaData.InputCollection.New();
    Input.Name = "DTSSampleInput";

    IDTSOutput output = ComponentMetaData.OutputCollection.New();
    output.ExclusionGroup = 1;
    output.Name = "Output1";
    output.SynchronousInputID = input.ID;

    IDTSOutput output = ComponentMetaData.OutputCollection.New();
    output.ExclusionGroup = 1;
    output.Name = "Output2";
    output.SynchronousInputID = input.ID;
}
public override void ProcessInput(int inputID, PipelineBuffer buffer)
{
    IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);

    IDTSOutput100 output1 = ComponentMetaData.OutputCollection[0];
    IDTSOutput100 output2 = ComponentMetaData.OutputCollection[1];

    while( buffer.NextRow())
    {
        // TODO: Insert if/then block here.
        // If criteria is met, direct the buffer row to output1.
        buffer.DirectRow(output1.ID);
        // Otherwise, direct the row to output2.
         buffer.DirectRow(output2.ID);
    }
}
Public Overrides Sub ProvideComponentProperties() 
 Dim input As IDTSInput100 = ComponentMetaData.InputCollection.New 
 Input.Name = "DTSSampleInput" 
 Dim output As IDTSOutput = ComponentMetaData.OutputCollection.New 
 output.ExclusionGroup = 1 
 output.Name = "Output1" 
 output.SynchronousInputID = input.ID 
 Dim output As IDTSOutput = ComponentMetaData.OutputCollection.New 
 output.ExclusionGroup = 1 
 output.Name = "Output2" 
 output.SynchronousInputID = input.ID 
End Sub 

Public  Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer) 
 Dim input As IDTSInput100 = ComponentMetaData.InputCollection.GetObjectByID(inputID) 
 Dim output1 As IDTSOutput100 = ComponentMetaData.OutputCollection(0) 
 Dim output2 As IDTSOutput100 = ComponentMetaData.OutputCollection(1) 
While buffer.NextRow 
  ' TODO: Insert if/then block here.
  ' If criteria is met, direct the buffer row to output1.
   buffer.DirectRow(output1.ID) 
  ' Otherwise, direct the row to output2.
   buffer.DirectRow(output2.ID) 
 End While 
End Sub