268 votes

Quand dois-je utiliser des points-virgules dans SQL Server?

Lors de la vérification du code sur le Web et des scripts générés par SQL Server Management Studio, j'ai remarqué que certaines instructions se terminent par un point-virgule.

Alors, quand devrais-je l'utiliser?

181voto

TheTXI Points 24470

À partir d'un SQLServerCentral.Com article par Ken Pouvoirs:

Le Point-Virgule

Le caractère point-virgule est un terminateur d'instruction. C'est une partie de la norme ANSI SQL-92, mais n'a jamais été utilisé à l'intérieur de Transact-SQL. En effet, il a été possible de code T-SQL pendant des années sans jamais rencontrer un point-virgule.

L'utilisation de la

Il y a deux situations dans lesquelles vous devez utiliser le point-virgule. La première situation correspond au cas où vous utilisez une Expression de Table Commune (CTE), et le CCE n'est pas la première instruction dans le lot. La deuxième est l'endroit où vous délivrer un Service de courtiers et de l'instruction Service Broker n'est pas la première instruction dans le lot.

112voto

tpdi Points 18427

Par défaut, les instructions SQL sont terminées par des points-virgules. Vous utilisez un point-virgule pour mettre fin à des déclarations, sauf si vous avez (rarement) de définir une nouvelle déclaration de terminator.

Si vous envoyez juste une seule déclaration, techniquement, vous pouvez vous dispenser de la déclaration de terminaison; dans un script, que vous envoyez plus d'une instruction, vous en avez besoin.

Dans la pratique, toujours inclure le terminator, même si vous êtes juste de l'envoi d'une déclaration à la base de données.

Edit: en réponse à ceux qui disent déclaration des terminaisons ne sont pas requis par [notamment SGBDR], tout cela peut être vrai, ils sont requis par la Norme SQL ANSI. Dans l'ensemble de la programmation, si l'on peut adhérer à une Norme sans perte de fonctionnalité, nous devrions, parce que ni notre code ou nos habitudes sont liés à un propriétaire vendeur.

Avec certains compilateurs C, il est possible de l'avoir de retour principale nul, même si la Norme exige principal de retour de type int. Mais ce qui rend notre code, et nous-mêmes, moins portable.

La plus grande difficulté dans la programmation de manière efficace n'est pas d'apprendre de nouvelles choses, c'est désapprendre les mauvaises habitudes. Dans la mesure où nous pouvons éviter de contracter de mauvaises habitudes, en premier lieu, c'est une victoire pour nous, pour notre code, et pour tous ceux à la lecture ou à l'aide de notre code.

26voto

GSerg Points 33571

Dans SQL2008 de BOL, ils disent que dans les prochaines versions des points-virgules sera nécessaire. Donc, toujours l'utiliser.

Référence:

22voto

Spidermain50 Points 302

Si je lis correctement, il va être nécessaire d'utiliser des points-virgules à la fin TSQL consolidés. http://msdn.microsoft.com/en-us/library/ms143729%28v=sql.120%29.aspx

EDIT: J'ai trouvé un plug-in pour SSMS 2008R2 que de formater votre script et ajouter les points-virgules. Je pense qu'il est encore en version bêta...

http://www.tsqltidy.com/tsqltidySSMSAddin.aspx

EDIT: J'ai trouvé un meilleur outil gratuit/plugin appelé ApexSQL... http://www.apexsql.com/

10voto

Rob Garrison Points 2977

Opinion personnelle: Utiliser uniquement là où ils sont nécessaires. (Voir TheTXI la réponse ci-dessus pour la liste.)

Car le compilateur n'a pas besoin d'eux, vous pouvez les mettre partout, mais pourquoi? Le compilateur ne vais pas vous dire où vous avez oublié, donc vous aurez l'utilisation incohérente.

[Cette opinion est spécifique à SQL Server. D'autres bases de données peuvent avoir plus strictes exigences. Si vous êtes à la rédaction de SQL à exécuter sur plusieurs bases de données, vos besoins peuvent varier.]

tpdi indiqué ci-dessus, "dans un script, que vous envoyez plus d'une instruction, vous en avez besoin." Ce n'est pas vraiment correct. Vous n'en avez pas besoin.

PRINT 'Semicolons are optional'
PRINT 'Semicolons are optional'
PRINT 'Semicolons are optional';
PRINT 'Semicolons are optional';

Sortie:

Semicolons are optional
Semicolons are optional
Semicolons are optional
Semicolons are optional

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X