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
    Si tratta di un numero integer positivo. Il batch che precede GO esegue il numero specificato di ore.

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

Altre risorse

Batch

Guida in linea e informazioni

Assistenza su SQL Server 2005