PipelineComponent.PreExecute Method
PrepareForExecute の後で、かつ PrimeOutput および ProcessInput の前に呼び出されます。
名前空間: Microsoft.SqlServer.Dts.Pipeline
アセンブリ: Microsoft.SqlServer.PipelineHost (microsoft.sqlserver.pipelinehost.dll 内)
構文
'宣言
Public Overridable Sub PreExecute
public virtual void PreExecute ()
public:
virtual void PreExecute ()
public void PreExecute ()
public function PreExecute ()
解説
コンポーネントの開発者は、可能な限り多くの機能を PreExecute に組み込んでおく必要があります。その理由は、ProcessInput の各バッファごとに 1 回ではなく、コンポーネントごとに 1 回呼び出されるからです。コンポーネントは、BufferManager の FindColumnByLineageID メソッドを呼びだすことにより、PipelineBuffer での入力列と出力列のインデックスを検索する必要があります。
使用例
次の例では、InputColumnCollection 内の列の列インデックスを検索する方法を示しています。これらはローカル変数に格納され、PipelineBuffer 内の列にアクセスするために、ProcessInput で使用されます。
int[] bufferColumnIndex;
public override void PreExecute()
{
IDTSInput90 input = ComponentMetaData.InputCollection[0];
bufferColumnIndex = new int[input.InputColumnCollection.Count];
for ( int x=0; x < input.InputColumnCollection.Count; x++)
{
bufferColumnIndex[x] = BufferManager.FindColumnByLineageID( input.Buffer, input.InputColumnCollection[x].LineageID);
}
}
public override void ProcessInput( int inputID, PipelineBuffer buffer )
{
if( !buffer.EndOfRowset)
{
while( buffer.NextRow() )
{
for( int x=0; x < bufferColumnIndex.Length(); x++ )
{
if( !buffer.IsNull(bufferColumnIndex[x]))
{
// TODO: Access the column data.
}
}
}
}
}
Private bufferColumnIndex As Integer()
Public Overrides Sub PreExecute()
Dim input As IDTSInput90 = ComponentMetaData.InputCollection(0)
bufferColumnIndex = New Integer(input.InputColumnCollection.Count - 1) {}
Dim x As Integer = 0
While x < input.InputColumnCollection.Count
bufferColumnIndex(x) = BufferManager.FindColumnByLineageID(input.Buffer, input.InputColumnCollection(x).LineageID)
x -= 1
End While
End Sub
Public Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer)
If Not buffer.EndOfRowset Then
While buffer.NextRow
Dim x As Integer = 0
While x < bufferColumnIndex.Length
If Not buffer.IsNull(bufferColumnIndex(x)) Then
End If
x -= 1
End While
End While
End If
End Sub
スレッド セーフ
この型の public static (Microsoft Visual Basic では共有 ) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォーム
開発プラットフォーム
サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。
対象プラットフォーム
サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。
参照
関連項目
PipelineComponent Class
PipelineComponent Members
Microsoft.SqlServer.Dts.Pipeline Namespace