GO (Transact-SQL)

Contrassegna la fine di un batch di istruzioni Transact-SQL per le utilità di SQL Server.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

GO [count]

Argomenti

  • count
    Numero integer positivo. Il batch che precede GO verrà eseguito il numero specificato di volte.

Osservazioni

GO non è un'istruzione Transact-SQL, ma un comando riconosciuto dalle utilità sqlcmd e osql e dall'editor del codice di SQL Server Management Studio.

Il comando GO viene interpretato dalle utilità di SQL Server come un segnale per l'invio del batch corrente di istruzioni Transact-SQL a un'istanza di SQL Server. Il batch di istruzioni corrente è composto da tutte le istruzioni immesse dopo l'ultima esecuzione del comando GO oppure dopo l'avvio della sessione ad hoc o dello script se si tratta della prima esecuzione di GO.

Non è possibile specificare un'istruzione Transact-SQL nella stessa riga di un comando GO. La riga, tuttavia, può includere commenti.

Gli utenti devono seguire le regole per i batch. Per l'esecuzione di una stored procedure dopo la prima istruzione di un batch, ad esempio, è necessario includere la parola chiave EXECUTE. L'ambito delle variabili locali definite dall'utente è limitato a un batch e non è possibile fare riferimento a tali variabili dopo l'esecuzione del comando GO.

USE AdventureWorks;
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

Le applicazioni di SQL Server possono inviare più istruzioni Transact-SQL a un'istanza di SQL Server affinché vengano eseguite come batch. Le istruzioni del batch vengono quindi compilate in un unico piano di esecuzione. I programmatori che eseguono istruzioni ad hoc nelle utilità di SQL Server oppure creano script di istruzioni Transact-SQL da eseguire tramite le utilità di SQL Server utilizzano il comando GO per segnalare la fine di un batch.

Nelle applicazioni basate sulle API ODBC o OLE DB i tentativi di esecuzione del comando GO provocano un errore di sintassi. Le utilità di SQL Server non inviano mai un comando GO al server.

Autorizzazioni

GO è un comando di utilità che non richiede autorizzazioni e può essere eseguito da qualsiasi utente.

Esempi

Nell'esempio seguente vengono creati due batch. Il primo contiene solo un'istruzione USEAdventureWorks per l'impostazione del contesto del database. Nelle restanti istruzioni viene utilizzata una variabile locale. Pertanto, tutte le dichiarazioni della variabile locale devono essere raggruppate in un singolo batch. A tale scopo, è necessario inserire il comando GO solo dopo l'ultima istruzione che fa riferimento alla variabile.

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

Vedere anche

Concetti