Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо FireError се проваля в C# 2012, но работи във VB, докато FireInformation работи и в двете?

Може да обърквате сходния, но различен синтаксис за задействане на грешка спрямо информационни събития от Script Components (задача за поток от данни) спрямо Script Tasks (контролен поток). Intellisense за Component показва, че параметърът е pbCancel, докато fireAgain съответства на параметъра на Information Task.

Скрипт компонент

Пример за компонент на скрипт на C#

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 компонент

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

Няма нужда да се указва изрично, че даден параметър е по препратка, тъй като това изглежда се прави в дефиницията спрямо изискването на C# да се указва също и при извикване.Поясняване на ByRef срещу ByVal

Скриптова задача

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

Резюме

  • C# изисква да посочите ref и out ключови думи. Те не са синоними
  • VB ви позволява да правите всичко
  • Събитието за грешка в компонентите има параметър за отмяна


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да запазя CDATA тагове, когато съхранявам резултати от заявка в Xml променлива?

  2. Докато цикъл в SQL Server 2008 итерация през диапазон от дати и след това INSERT

  3. показва подкатегории с помощта на SQL

  4. Как да върнете *всичко* от съхранена процедура с помощта на JDBC

  5. Кой е най-добрият начин за създаване и попълване на таблица с числа?