Bonjour,
Je me demandais quel état le rôle de la commande GO que l'on voit parfois dans certains exports au format SQL.
Si je retire les GO j'ai l'impression que ça fait pareil....
Si quelqu'un a la réponse je serais curieux de savoir
Merci !
Version imprimable
Bonjour,
Je me demandais quel état le rôle de la commande GO que l'on voit parfois dans certains exports au format SQL.
Si je retire les GO j'ai l'impression que ça fait pareil....
Si quelqu'un a la réponse je serais curieux de savoir
Merci !
GO n'est pas une commande SQl. C'est une commande de l'interpréteur qu'est SSMS ou SQLcmd.
Cette commande permet de forcrer l'envoi du lot de commande SQL et d'attendre le retour du serveur avant de poursuivre.
Elle est indispensable dans certains cas de figure, car le serveur ne peut pas toujours comprendre ce que l'on veut faire d'un point de vue analyse syntaxique ou objet.
Exemple :
;Code:
1
2 CREATE TABLE TOTO (C INT); CREATE VIEW TITI AS SELECT * FROM TOTO
Renvoi systématiquement :
Msg*111, Niveau*15, État*1, Ligne*2
'CREATE VIEW' doit être la première instruction d'un traitement de requêtes.
Car le création de la vue se fait sur un objet qui n'existe pas à l'interprétation
Avec GO tout va bien :
;Code:
1
2
3 CREATE TABLE TOTO (C INT); GO CREATE VIEW TITI AS SELECT * FROM TOTO
Notez que GO doit toujours être sur une ligne séparée car c'est ligne à ligne qu'agit l'interpréteur de commande. Par exemple :
;Code:
1
2 CREATE TABLE TOTO (C INT); GO CREATE VIEW TITI AS SELECT * FROM TOTO
Provoque une autre erreur :
Msg*102, Niveau*15, État*1, Ligne*1
Syntaxe incorrecte vers 'GO'.
Msg*111, Niveau*15, État*1, Ligne*2
'CREATE VIEW' doit être la première instruction d'un traitement de requêtes.
A +