Поделиться через


PipelineComponent.PreExecute Метод

Определение

Вызывается после вызова метода PrepareForExecute(), но перед вызовом методов PrimeOutput(Int32, Int32[], PipelineBuffer[]) и 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 ()

Примеры

В следующем примере показано, как найти индексы столбцов в 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. Компоненты должны находить индексы входных и выходных столбцов в методе PipelineBufferFindColumnByLineageIDBufferManager.

Применяется к