Instructions d’utilitaires SQL Server - GO

 

S’applique à : SQL Server (starting with 2008)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

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

S’applique à: SQL Server (SQL Server 2008 jusqu’à la version actuelle), Base de données Azure SQL.

Topic link icon Conventions de la syntaxe Transact-SQL

  
GO [count]  

nombre
Entier positif. Le lot qui précède GO sera exécuté le nombre spécifié de fois.

GO n’est pas un Transact-SQL instruction ; il est une commande reconnue par le sqlcmd et osql utilitaires et SQL Server Management Studio éditeur de Code.

Les utilitaires SQL Server interprètent GO comme le signal qu'ils doivent envoyer le lot actuel d'instructions Transact-SQL à 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 AdventureWorks2012;  
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.

N'utilisez pas un point-virgule comme terminateur d'instruction après GO.

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

-- Yields an error because ; is not permitted after GO  
SELECT @@VERSION;  
GO;  

L'exemple suivant crée deux traitements. Le premier lot contient uniquement une USE``AdventureWorks2012 instruction pour définir le contexte de 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 AdventureWorks2012;  
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  

L'exemple suivant exécute les instructions dans le lot à deux reprises.

SELECT DB_NAME();  
SELECT USER_NAME();  
GO 2  

Ajouts de la communauté

AJOUTER
Afficher: