GO (Transact-SQL)

Signale la fin d'un lot d'instructions Transact-SQL aux utilitaires SQL Server.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

GO [count]

Arguments

  • count
    Entier positif. Le lot qui précède la commande GO s'exécute le nombre de fois spécifié.

Notes

GO n'est pas une instruction Transact-SQL mais une commande reconnue par les utilitaires sqlcmd et osql et l'éditeur de code SQL Server Management Studio.

Les utilitaires SQL Server interprètent GO comme le signal qu'ils doivent envoyer le lot d'instructions Transact-SQL en cours à une instance de SQL Server. Le lot d'instructions en cours se compose de toutes les transactions entrées depuis la dernière commande GO ou depuis le début de la session ou du script approprié s'il s'agit de la première commande GO.

Une instruction Transact-SQL ne peut pas se trouver sur la même ligne qu'une commande GO. Toutefois, la ligne peut contenir des commentaires.

Les utilisateurs doivent se conformer aux règles en vigueur concernant les lots d'instructions. Par exemple, toute exécution d'une procédure stockée faisant suite à la première instruction d'un lot d'instructions doit inclure le mot clé EXECUTE. La portée des variables locales (personnalisées) se limite à un lot d'instructions et il est impossible d'y faire référence après une commande 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

Les applications SQL Server peuvent envoyer plusieurs instructions Transact-SQL à une instance de SQL Server en vue de leur exécution sous forme de lot. Les instructions du lot sont ensuite compilées dans un plan d'exécution unique. Les programmeurs qui exécutent des instructions appropriées dans les utilitaires SQL Server ou élaborent des scripts d'instructions Transact-SQL à exécuter par le biais des utilitaires SQL Server, utilisent la commande GO pour signaler la fin d'un lot d'instructions.

Les applications basées sur ODBC ou sur les API OLE DB reçoivent une erreur de syntaxe s'ils tentent d'exécuter une commande GO. Les utilitaires SQL Server n'envoient jamais de commande GO au serveur.

Autorisations

GO est une commande d'utilitaire qui ne nécessite pas d'autorisation. Elle peut être exécutée par tout utilisateur.

Exemple

L'exemple suivant crée deux lots d'instructions. Le premier lot contient uniquement une instruction USE``AdventureWorks pour définir le contexte de la base de données. Les autres instructions utilisent une variable locale. Ainsi, toutes les déclarations de variables locales doivent être groupées en un seul lot. Pour cela, aucune commande GO n'est utilisée avant la dernière instruction qui fait référence à la variable.

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

Voir aussi

Autres ressources

Lots d'instructions

Aide et Informations

Assistance sur SQL Server 2005