Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
SQL Server biedt opdrachten die niet Transact-SQL instructies, maar worden herkend door de sqlcmd - en osql-hulpprogramma's en SQL Server Management Studio Code Editor. Deze opdrachten kunnen worden gebruikt om de leesbaarheid en uitvoering van batches en scripts te vergemakkelijken.
GO geeft het einde van een batch Transact-SQL instructies aan bij de SQL Server-hulpprogramma's.
Transact-SQL syntaxis-conventies
Syntax
GO [count]
Arguments
count
Is een positief geheel getal. De batch voorafgaand aan GO voert het opgegeven aantal keren uit.
Remarks
GO is geen Transact-SQL instructie; het is een opdracht die wordt herkend door de sqlcmd - en osql-hulpprogramma's en de SQL Server Management Studio Code-editor.
SQL Server-hulpprogramma's interpreteren GO als een signaal dat ze de huidige batch met Transact-SQL-instructies moeten verzenden naar een exemplaar van SQL Server. De huidige batch met instructies bestaat uit alle opgegeven instructies sinds de laatste GO, of sinds het begin van de ad-hocsessie of het script als dit de eerste GO is.
Een Transact-SQL instructie kan niet dezelfde regel bezetten als een GO-opdracht. De regel kan echter opmerkingen bevatten.
Gebruikers moeten de regels voor batches volgen. Elke uitvoering van een opgeslagen procedure na de eerste instructie in een batch moet bijvoorbeeld het trefwoord EXECUTE bevatten. Het bereik van lokale (door de gebruiker gedefinieerde) variabelen is beperkt tot een batch en kan niet worden verwezen na een GO-opdracht.
USE AdventureWorks2022;
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-toepassingen kunnen meerdere Transact-SQL instructies verzenden naar een exemplaar van SQL Server voor uitvoering als batch. De instructies in de batch worden vervolgens gecompileerd in één uitvoeringsplan. Programmeurs die ad-hocinstructies uitvoeren in de SQL Server-hulpprogramma's of scripts van Transact-SQL-instructies bouwen om door de SQL Server-hulpprogramma's te lopen, gebruiken GO om het einde van een batch aan te geven.
Toepassingen op basis van de ODBC- of OLE DB-API's krijgen een syntaxisfout als ze een GO-opdracht proberen uit te voeren. De SQL Server-hulpprogramma's verzenden nooit een GO-opdracht naar de server.
Gebruik geen puntkomma als instructieeindteken na GO.
-- Yields an error because ; is not permitted after GO
SELECT @@VERSION;
GO;
In de SQL-queryeditor van de Microsoft Fabric-portal wordt elke SQL-instructie uitgevoerd als een onafhankelijke sessie. Sessiecontext blijft niet behouden tussen SQL-instructies. Zie SQL-queryeditor voor meer informatie.
Permissions
GO is een hulpprogrammaopdracht waarvoor geen machtigingen zijn vereist. Het kan door elke gebruiker worden uitgevoerd.
Examples
In het volgende voorbeeld worden twee batches gemaakt. De eerste batch bevat slechts een USE AdventureWorks2022 instructie om de databasecontext in te stellen. De resterende instructies maken gebruik van een lokale variabele. Daarom moeten alle declaraties van lokale variabelen in één batch worden gegroepeerd. Dit wordt gedaan door pas na de laatste instructie een GO opdracht te hebben die verwijst naar de variabele.
USE AdventureWorks2022;
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
In het volgende voorbeeld worden de instructies in de batch twee keer uitgevoerd.
SELECT DB_NAME();
SELECT USER_NAME();
GO 2