PipelineComponent.PreExecute Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Chiamato dopo PrepareForExecute(), e prima PrimeOutput(Int32, Int32[], PipelineBuffer[]) e ProcessInput(Int32, PipelineBuffer).
public:
virtual void PreExecute();
public virtual void PreExecute();
abstract member PreExecute : unit -> unit
override this.PreExecute : unit -> unit
Public Overridable Sub PreExecute ()
Esempio
Il seguente esempio mostra come individuare gli indici delle colonne nel InputColumnCollection. Vengono memorizzate in una variabile locale e poi utilizzate in ProcessInput per accedere alle colonne nel 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
Commenti
Gli sviluppatori di componenti dovrebbero considerare quanta più funzionalità PreExecute possibile perché viene chiamata una volta per componente invece che una volta per buffer per ProcessInput. I componenti dovrebbero localizzare gli indici delle colonne di input e output nel PipelineBuffer chiamando il FindColumnByLineageID metodo del BufferManager.