GO (Transact-SQL)

Signalisiert das Ende eines Batches von Transact-SQL-Anweisungen an die SQL Server-Hilfsprogramme.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen


GO [count]

count

Eine positive ganze Zahl. Der Batch, der GO vorausgeht, wird so oft wie angegeben ausgeführt.

GO ist keine Transact-SQL-Anweisung; es ist ein Befehl, der von den sqlcmd- und osql-Hilfstprogrammen und vom SQL Server Management Studio-Code-Editor erkannt wird.

Die SQL Server-Hilfsprogramme interpretieren GO als ein Signal zum Senden des aktuellen Batches von Transact-SQL-Anweisungen an eine Instanz von SQL Server. Der aktuelle Anweisungsbatch besteht aus allen Anweisungen, die seit dem letzten GO eingegeben wurden. Wenn dies das erste GO ist, besteht er aus allen Anweisungen, die seit dem Beginn der Ad-hoc-Sitzung oder des Skripts eingegeben wurden.

Eine Transact-SQL-Anweisung kann nicht dieselbe Zeile wie ein GO-Befehl belegen. Allerdings kann die Zeile Kommentare enthalten.

Benutzer müssen die Regeln für Batches befolgen. So muss z. B. jede Ausführung einer gespeicherten Prozedur nach der ersten Anweisung in einem Batch das EXECUTE-Schlüsselwort einschließen. Der Bereich von lokalen (benutzerdefinierten) Variablen ist auf einen Batch beschränkt, auf die nicht nach einem GO-Befehl verwiesen werden kann.

USE AdventureWorks2008R2;
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.

-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO

SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in 
-- batch.
sp_who
GO

SQL Server-Anwendungen können zum Ausführen eines Batches mehrere Transact-SQL-Anweisungen an eine Instanz von SQL Server senden. Die Anweisungen im Batch werden dann in einen einzelnen Ausführungsplan kompiliert. Programmierer, die Ad-hoc-Anweisungen in den SQL Server-Hilfsprogrammen ausführen oder aus Transact-SQL-Anweisungen Skripts zur Ausführung durch die SQL Server-Hilfsprogramme erstellen, verwenden GO, um das Ende eines Batches zu signalisieren.

Auf den ODBC- oder OLE DB-APIs basierende Anwendungen erhalten einen Syntaxfehler, wenn sie versuchen, einen GO-Befehl auszuführen. Die SQL Server-Hilfsprogramme senden nie einen GO-Befehl an den Server.

GO ist ein Hilfsprogrammbefehl, für den keine Berechtigungen erforderlich sind. Der Befehl kann von jedem Benutzer ausgeführt werden.

Im folgenden Beispiel werden zwei Batches erstellt. Der erste Batch enthält nur eine USEAdventureWorks2008R2-Anweisung zum Festlegen des Datenbankkontexts. Die verbleibenden Anweisungen verwenden eine lokale Variable. Daher müssen alle Deklarationen von lokalen Variablen in einem einzelnen Batch gruppiert werden. Dies wird erreicht, indem ein GO-Befehl erst nach der letzten Anweisung, die auf die Variable verweist, ausgeführt wird.

USE AdventureWorks2008R2;
GO
DECLARE @NmbrPeople int
SELECT @NmbrPeople = COUNT(*)
FROM Person.Person;
PRINT 'The number of people as of ' +
      CAST(GETDATE() AS char(20)) + ' is ' +
      CAST(@NmbrPeople AS char (10));
GO

Community-Beiträge

HINZUFÜGEN
Anzeigen: