SQL Server Management Studio insère toujours une commande GO lorsque je crée une requête en utilisant le menu contextuel "Script en tant que". Pourquoi? Que fait réellement GO?
C'est un terminateur de lot, vous pouvez cependant le changer pour ce que vous voulez
Depuis Management Studio 2005, il semble que vous puissiez utiliser GO
avec un paramètre int
, tel que:
INSERT INTO mytable DEFAULT VALUES
GO 10
Ce qui précède insère 10 lignes dans mytable
. De manière générale, GO
exécutera les commandes SQL associées n
fois.
La commande GO n'est pas une instruction Transact-SQL, mais une commande spéciale reconnue par plusieurs utilitaires de Microsoft, notamment l'éditeur de code SQL Server Management Studio.
La commande GO permet de regrouper les commandes SQL en lots envoyés au serveur. Les commandes incluses dans le lot, c'est-à-dire l'ensemble des commandes depuis la dernière commande GO ou le début de la session, doivent être logiquement cohérentes. Par exemple, vous ne pouvez pas définir une variable dans un lot, puis l'utiliser dans un autre, car la portée de la variable est limitée au lot dans lequel elle est définie.
Pour plus d'informations, voir http://msdn.Microsoft.com/en-us/library/ms188037.aspx .
GO n'est pas un mot clé SQL.
C'est un séparateur de lot utilisé par les outils clients (comme SSMS) pour diviser le script en lots
Répondu avant plusieurs fois ... exemple 1
Pour ajouter aux réponses existantes, lorsque vous créez des vues, vous devez séparer ces commandes en lots à l'aide de go
, sinon vous obtiendrez l'erreur 'CREATE VIEW' must be the only statement in the batch
. Ainsi, par exemple, vous ne pourrez pas exécuter le script SQL suivant sans go
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
Use herDatabase
GO ;
Le code dit d'exécuter les instructions au-dessus du marqueur GO
. Ma base de données par défaut est myDatabase, donc au lieu d'utiliser myDatabase GO
et fait en sorte que la requête actuelle utilise herDatabase
Go signifie que, quelles que soient les instructions SQL écrites avant et après toute GO antérieure, iront au serveur SQL pour traitement.
Select * from employees;
GO -- GO 1
update employees set empID=21 where empCode=123;
GO -- GO 2
Dans l'exemple ci-dessus, les instructions antérieures à GO 1 iront au serveur SQL dans un lot, puis toutes les autres instructions antérieures à GO 2 iront au serveur SQL dans un autre lot. Donc, comme nous le voyons, il y a des lots séparés.