Quelle est la différence entre «; » et « GO » dans TSQL (SQL 2008) ?

J'utilise ADO.NET ou l'utilitaire sqlcmd pour envoyer des scripts sql pour SQL 2008. Quelle est la différence entre l'utilisation des «; » et « GO » pour séparer les morceaux de SQL ? Merci, NEstor

répondre #1

GO n'est pas réellement une commande T-SQL, c'est que quelque chose introduit par les outils permettant de séparer les instructions par lots comme la fin d'une procédure stockée. Il est pris en charge par les outils de pile MS SQL, mais pas formellement partie d'autres outils.

Vous ne peut pas mettre un aller dans une chaîne SQL et envoyez-le dans le cadre d'un objet de commande ADO.NET SQL lui-même ne comprend pas le terme. Une autre façon de le démontrer est avec le profileur, configurer certaines instructions qui utilisent, accédez dans Query Analyzer/Management Studio et exécutez le générateur de profils lorsque vous exécutez - ils sont émis sous forme de commandes distinctes pour le serveur, vous verrez.

Le point-virgule est utilisé pour signifier la fin d'une instruction proprement dite, pas nécessairement un lot entier.

http://msdn.Microsoft.com/en-us/library/ms188037.aspx

répondre #2

point-virgule est un séparateur d'instruction. L'ou les instructions précédente n'est pas nécessairement exécutée lorsqu'un point-virgule est rencontré.

GO

Indique la fin d'un lot. Exécute le lot précédent de déclarations, comme le fait la rencontre de la fin du bloc.

GO 2

Moyens exécutent le lot que plusieurs fois. Je pense que j'ai utilisé cette option peut-être deux fois dans ma vie. Là encore, je ne suis pas un utilisateur DBA par commerce.

répondre #3

« GO » est similaire à ; dans bien des cas, mais signifie en fait la fin d'un lot.

Chaque lot est engagé lors de l'instruction « GO » est appelé, ainsi si vous avez :

SELECT * FROM table-that-does-not-exist;
SELECT * FROM good-table;

dans votre lot, puis la sélectionner bonne table est jamais appelée car la première instruction select génère une erreur.

Si vous aviez à la place :

SELECT * FROM table-that-does-not-exist
GO
SELECT * FROM good-table
GO

La première instruction select génère toujours une erreur, mais étant donné que la seconde instruction est dans son propre lot, il s'exécutera toujours.

GO n'a rien à voir avec la validation d'une transaction.

répondre #4

« GO » est généralement utilisée pour indiquer la fin d'un lot d'instructions SQL qui signifie que vous pourriez avoir un begin transaction et end transaction enveloppé dans une collection unique de déclarations qui pourraient échouer ou réussir ensemble.

";" est généralement utilisé pour séparer plusieurs instructions SQL de l'un de l'autre. Ceci est perceptible dans les scripts SQL qui doivent retourner plusieurs jeux d'enregistrements, telles que « select * from table1 ; Sélectionnez * de table2; "qui entraînerait deux jeux d'enregistrements distincts du côté du client.

répondre #5

J'ai pensé que le ; caractère sépare une liste de commandes SQL, allez juste indique à SQL Server pour valider toutes les commandes précédentes.


Tags lesen

   
 
logo_banner