web-dev-qa-db-fra.com

Quelle est l'utilisation de GO dans SQL Server Management Studio et Transact SQL?

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?

331
tvanfosson

C'est un terminateur de lot, vous pouvez cependant le changer pour ce que vous voulez alt text

283
SQLMenace

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.

275
MicSim

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 .

182
tvanfosson

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

34
gbn

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
14
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

6
TonyP

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.

5
ANIL KUMAR