Angeben von Batches

Batches werden als Teil der Datenbank-APIs implementiert.

  • In ADO ist ein Batch die Zeichenfolge von Transact-SQL-Anweisungen, die in der CommandText-Eigenschaft eines Command-Objekts enthalten sind:

    Dim Cmd As New ADODB.Command
    Set Cmd.ActiveConnection = Cn
    Cmd.CommandText = "SELECT * FROM Purchasing.Vendor; SELECT * FROM Production.Product"
    Cmd.CommandType = adCmdText
    Cmd.Execute
    
  • In OLE DB ist ein Batch die Zeichenfolge von Transact-SQL-Anweisungen, die in der zum Festlegen des Befehlstexts verwendeten Zeichenfolge enthalten sind:

    WCHAR* wszSQLString =
    L"SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product";
    hr = pICommandText->SetCommandText
          (DBGUID_DBSQL, wszSQLString)
    
  • In ODBC ist ein Batch die Zeichenfolge von Transact-SQL-Anweisungen, die in einem SQLPrepare- oder SQLExecDirect-Aufruf enthalten sind:

    SQLExecDirect(hstmt1,
       "SELECT * FROM HumanResources.Employee; SELECT * FROM Production.Product",
    SQL_NTS):
    

Einige Datenzugriffstools, wie z. B. Microsoft Access, verfügen nicht über ein explizites Batchabschlusszeichen.

Der GO-Befehl

Microsoft SQL Server Management Studio, das sqlcmd -Dienstprogramm sowie das osql-Dienstprogramm verwenden den GO-Befehl, um das Ende eines Batches anzuzeigen. GO ist keine Transact-SQL-SQL-Anweisung, sondern zeigt den Dienstprogrammen lediglich an, wie viele SQL-Anweisungen in einem Batch enthalten sein sollen. In SQL Server Management Studio und osql werden alle Transact-SQL-Anweisungen von einem GO-Befehl bis zum nächsten in die an SQLExecDirect gesendete Zeichenfolge eingefügt.

Wenn z. B. diese Anweisungen in SQL Server Management Studio ausgeführt werden:

SELECT @@VERSION
SET NOCOUNT ON
GO

führt SQL Server Management Studio einen dem Folgenden entsprechenden Schritt aus:

SQLExecDirect(hstmt,
"SELECT @@VERSION SET NOCOUNT ON",
SQL_NTS);

Da ein Batch in einen einzigen Ausführungsplan kompiliert wird, muss er logisch abgeschlossen sein. Der für einen Batch erstellte Ausführungsplan kann nicht auf Variablen verweisen, die in einem anderen Batch deklariert werden. Kommentare müssen in einem Batch beginnen und enden.