Je le fais toujours lors de la publication ici ou sur StackOverflow car pour WITH
- puisque le mot-clé est surchargé - la commande précédente nécessite un point-virgule de fin. Si je colle un exemple de code qui utilise un CTE, inévitablement certains utilisateurs le colleront dans leur code existant, et l'instruction précédente n'aura pas le point-virgule. Donc le code casse, et je reçois des plaintes comme:
Votre code s'est cassé! J'ai reçu ce message d'erreur:
Incorrect syntax near 'WITH'
...
Bien que j'aimerais croire que les gens sont de mieux en mieux pour toujours terminer leurs déclarations avec un point-virgule , je préfère prévenir le bruit et l'inclure simplement. Certaines personnes ne l'aiment pas, mais <shrug />
. Vous pouvez inclure autant de points-virgules avant ou après une instruction valide que vous le souhaitez. Ceci est valable:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Il n'y a donc aucun mal à ce qu'il y ait un point-virgule supplémentaire précédant une déclaration qui, par définition, l'exige. C'est plus sûr de le faire même si ce n'est pas si joli.
Il doit être formulé bizarrement pour faire passer le message, mais «ne pas terminer une instruction valide par un point-virgule» est en fait obsolète depuis SQL Server 2008. Donc, comme je le décris dans le billet de blog auquel je renvoie ci-dessus, même dans les cas où il n'est pas nécessaire de contourner une erreur, il doit être utilisé partout où il est valide. Vous pouvez le voir ici:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Recherchez la dernière page pour "point-virgule")
Bien sûr, ce ne serait pas SQL Server s'il n'y avait pas d'exceptions. Essaye ça:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Ce n'est pas la seule exception à la règle, mais c'est celle que je trouve la moins intuitive.