GO (Transact-SQL)

Signale la fin d'un traitementTransact-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 GO sera exécuté le nombre spécifié de fois.

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 traitementTransact-SQL en cours à une instance de SQL Server. Le traitement 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 traitements. Par exemple, toute exécution d'une procédure stockée faisant suite à la première instruction d'un lot doit inclure le mot clé EXECUTE. La portée des variables locales (personnalisées) se limite à un traitement 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 traitement. Les instructions du traitement 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 traitement.

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 traitements. Le premier traitement contient uniquement une instruction USEAdventureWorks 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 traitement. 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

Concepts