Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
SQL Server tillhandahåller kommandon som inte är Transact-SQL-instruktioner, men som identifieras av sqlcmd - och osql-verktygen och SQL Server Management Studio Code Editor. Dessa kommandon kan användas för att underlätta läsbarhet och körning av batchar och skript.
GO signalerar slutet på en batch med Transact-SQL-instruktioner till SQL Server-verktygen.
Transact-SQL syntaxkonventioner
Syntax
GO [count]
Arguments
count
Är ett positivt heltal. Batchen före GO kör det angivna antalet gånger.
Remarks
GO är inte en Transact-SQL-instruktion. det är ett kommando som identifieras av sqlcmd - och osql-verktygen och SQL Server Management Studio Code-redigeraren.
SQL Server-verktyg tolkar GO som en signal om att de ska skicka den aktuella batchen med Transact-SQL-instruktioner till en instans av SQL Server. Den aktuella batchen med -instruktioner består av alla instruktioner som angetts sedan den senaste GO-versionen, eller sedan ad hoc-sessionen eller skriptet startades om detta är den första GO-filen.
En Transact-SQL-instruktion kan inte uppta samma rad som ett GO-kommando. Raden kan dock innehålla kommentarer.
Användarna måste följa reglerna för batchar. En körning av en lagrad procedur efter den första instruktionen i en batch måste till exempel innehålla nyckelordet EXECUTE. Omfattningen för lokala (användardefinierade) variabler är begränsad till en batch och kan inte refereras efter ett GO-kommando.
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-program kan skicka flera Transact-SQL-instruktioner till en instans av SQL Server för körning som en batch. -uttrycken i batchen kompileras sedan till en enda körningsplan. Programmerare som kör ad hoc-instruktioner i SQL Server-verktygen eller skapar skript för Transact-SQL-instruktioner för att köra genom SQL Server-verktygen använder GO för att signalera slutet på en batch.
Program baserade på ODBC- eller OLE DB-API:erna får ett syntaxfel om de försöker köra ett GO-kommando. SQL Server-verktygen skickar aldrig ett GO-kommando till servern.
Använd inte semikolon som instruktionsavslutare efter GO.
-- Yields an error because ; is not permitted after GO
SELECT @@VERSION;
GO;
I SQL-frågeredigeraren för Microsoft Fabric-portalen körs varje SQL-instruktion som en oberoende session. Sessionskontexten bevaras inte i SQL-uttryck. Mer information finns i SQL-frågeredigeraren.
Permissions
GO är ett verktygskommando som inte kräver några behörigheter. Den kan köras av alla användare.
Examples
I följande exempel skapas två batchar. Den första batchen innehåller bara en USE AdventureWorks2022 -instruktion för att ange databaskontexten. De återstående uttrycken använder en lokal variabel. Därför måste alla lokala variabeldeklarationer grupperas i en enda batch. Detta görs genom att inte ha ett GO kommando förrän efter den sista instruktionen som refererar till variabeln.
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
I följande exempel körs -uttrycken i batchen två gånger.
SELECT DB_NAME();
SELECT USER_NAME();
GO 2