sql >> Database >  >> RDS >> Sqlserver

Waarom mislukt FireError in C# 2012, maar werkt het in VB, terwijl FireInformation in beide werkt?

U verwart misschien de vergelijkbare maar verschillende syntaxis voor activeringsfout versus informatiegebeurtenissen van scriptcomponenten (gegevensstroomtaak) versus scripttaken (besturingsstroom). De intellisense voor Component geeft aan dat de parameter pbCancel is, terwijl de fireAgain overeenkomt met de parameter van de informatietaak.

Scriptcomponent

Voorbeeld van C#-scriptcomponent

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    bool cancel = false;
    bool fireAgain = false;
    this.ComponentMetaData.FireInformation(0, "My sub", "info", string.Empty, 0, ref fireAgain);
    this.ComponentMetaData.FireError(0, "My sub", "error", string.Empty, 0, out cancel);
}

VB-component

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim cancel As Boolean
    Dim fireAgain As Boolean
    Me.ComponentMetaData.FireInformation(0, "my sub", "info", String.Empty, 0, fireAgain)
    Me.ComponentMetaData.FireError(0, "I hate vb", "Error", String.Empty, 0, cancel)
End Sub

Het is niet nodig om expliciet te specificeren dat een parameter By Reference is, aangezien dat lijkt te gebeuren in de definitie versus de C#-vereiste om deze ook bij aanroep te specificeren.ByRef vs ByVal Clarification

Scripttaak

C#

    public void Main()
    {
        bool fireAgain = false;
        this.Dts.Events.FireInformation(0, "my sub", "info", string.Empty, 0, ref fireAgain);
        // Note, no cancel available
        this.Dts.Events.FireError(0, "my sub", "error", string.Empty, 0);
    }

VB

Public Sub Main()
    Dim fireAgain As Boolean = False
    Me.Dts.Events.FireInformation(0, "my sub", "info desc", String.Empty, 0, fireAgain)
    Me.Dts.Events.FireError(0, "my sub", "error desc", String.Empty, 0)

    Dts.TaskResult = ScriptResults.Success
End Sub

Samenvatting

  • C# vereist dat je ref . opgeeft en out trefwoorden. Het zijn geen synoniemen
  • VB laat je alles doen
  • Foutgebeurtenis in Componenten heeft een annulatieparameter


  1. gebruik van regex in mysql

  2. Hoe MariaDB op Rocky Linux en AlmaLinux te installeren?

  3. MySQL-groep op aangepast tijdstempel

  4. MySql-tabel invoegen indien niet aanwezig, anders bijwerken