共用方式為


PipelineComponent.PreExecute 方法

Called after PrepareForExecute, and before PrimeOutput and ProcessInput.

命名空間:  Microsoft.SqlServer.Dts.Pipeline
組件:  Microsoft.SqlServer.PipelineHost (在 Microsoft.SqlServer.PipelineHost.dll 中)

語法

'宣告
Public Overridable Sub PreExecute
'用途
Dim instance As PipelineComponent

instance.PreExecute()
public virtual void PreExecute()
public:
virtual void PreExecute()
abstract PreExecute : unit -> unit  
override PreExecute : unit -> unit
public function PreExecute()

備註

Component developers should factor as much functionality into PreExecute as possible because it is called one time per component instead of one time per buffer for ProcessInput. Components should locate the indexes of its input and output columns in the PipelineBuffer by calling the FindColumnByLineageID method of the BufferManager.

範例

The following example shows how to locate the column indexes of the columns in the InputColumnCollection. They are stored in a local variable and then used in ProcessInput to access the columns in the 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

請參閱

參考

PipelineComponent 類別

Microsoft.SqlServer.Dts.Pipeline 命名空間