PipelineComponent.PreExecute 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
public:
virtual void PreExecute();
public virtual void PreExecute();
abstract member PreExecute : unit -> unit
override this.PreExecute : unit -> unit
Public Overridable Sub PreExecute ()
範例
以下範例說明如何定位 中欄位 InputColumnCollection索引。 它們被儲存在一個本地變數中,然後用來 ProcessInput 存取 中的欄位 PipelineBuffer。
int[] bufferColumnIndex;
public override void PreExecute()
{
IDTSInput100 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 )
{
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 IDTSInput100 = 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)
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 Sub
備註
元件開發者應盡可能多地將功能 PreExecute 納入其中,因為對於 ,它被呼叫為每個元件一次,而非每個緩衝 ProcessInput區一次。 元件應透過呼叫 FindColumnByLineageIDBufferManager的方法來定位其輸入與輸出欄位的PipelineBuffer索引。