Ich mache das immer, wenn ich hier oder auf StackOverflow poste, weil WITH
der vorherige Befehl - da das Schlüsselwort überladen ist - ein abschließendes Semikolon erfordert. Wenn ich ein Codebeispiel einfüge, das einen CTE verwendet, wird dieser zwangsläufig von einigen Benutzern in den vorhandenen Code eingefügt, und die vorherige Anweisung enthält kein Semikolon. Der Code bricht also und ich bekomme Beschwerden wie:
Ihr Code ist kaputt gegangen! Ich habe folgende Fehlermeldung erhalten:
Incorrect syntax near 'WITH'
...
Während ich glauben möchte, dass die Leute besser werden , wenn sie ihre Aussagen immer mit einem Semikolon abschließen , würde ich das Rauschen lieber vorwegnehmen und es einfach immer mit einbeziehen. Manche Leute mögen es nicht, aber <shrug />
. Sie können beliebig viele Semikolons vor oder nach einer gültigen Anweisung einfügen. Das ist gültig:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Es schadet also nichts, wenn ein zusätzliches Semikolon vor einer Anweisung steht, die dies per Definition erfordert. Das ist sicherer, auch wenn es nicht so hübsch ist.
Es muss seltsam formuliert werden, um den Punkt zu verdeutlichen, aber "eine gültige Anweisung nicht mit einem Semikolon zu beenden" ist seit SQL Server 2008 veraltet. Wie ich im Blog-Post beschreibe, verweise ich auf den obigen Link, auch in Fällen, in denen Es ist nicht erforderlich, einen Fehler zu umgehen. Es sollte verwendet werden, wo immer dies gültig ist. Sie können dies hier sehen:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Suche auf der letzten Seite nach "Semikolon")
Natürlich wäre es nicht SQL Server, wenn es keine Ausnahmen gäbe. Versuche dies:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Es ist nicht die einzige Ausnahme von der Regel, aber die, die ich am wenigsten intuitiv finde.