Wie funktioniert das Schlüsselwort "Mit" in SQL?

7

So oft gesehen with und so oft fragt SQL Server das mit ; davor hat

Wie funktioniert ;with ... ?

%Vor%

Warum muss ; davor stehen?

    
cMinor 07.03.2011, 05:29
quelle

4 Antworten

14

Das Semikolon wird in SQL verwendet, um eine Abfrage zu beenden. Wenn Sie es vor einer solchen Abfrage platzieren, stellen Sie nur sicher, dass die Datenbank erkennt, dass eine vorherige Abfrage beendet wurde.

Ursprünglich wurde es nach jeder Abfrage benötigt, da sie Zeile für Zeile eingegeben wurden. Daher musste die Datenbank wissen, wann sie die Abfrage ausführen sollte. Wenn die gesamte Abfrage in einer einzelnen Zeichenfolge gesendet wird, benötigen Sie nur Semikolon, wenn die SQL-Syntax nicht ausreicht, um zu bestimmen, wo eine Abfrage endet. Da das Schlüsselwort with unterschiedliche Verwendung hat, wird manchmal ein Semikolon benötigt, um sicherzustellen, dass es nicht Teil der vorherigen Abfrage ist.

    
Guffa 07.03.2011, 05:35
quelle
5

Wenn WITH für CTEs verwendet wird, muss die vorherige Anweisung mit ; beendet werden. Die Verwendung am Anfang garantiert die korrekte Syntax

Dies gilt auch für MERGE in SQL Server 2008

Siehe diese SO-Frage: Falsche Syntax in der Nähe des Schlüsselwortes 'mit' ... vorherige Anweisung muss mit einem Semikolon beendet werden

    
gbn 07.03.2011 05:33
quelle
2

Es empfiehlt sich, jede SQL-Anweisung mit einem Semikolon zu beenden. Die SQL Server-Dokumentation (zum Beispiel hier ) schlägt vor, dies zu tun, wird in einer zukünftigen Version zu tun sein Es gibt wirklich keine Entschuldigung dafür, sich jetzt nicht an die Gewohnheit zu gewöhnen.

Zur Beantwortung der Frage: Sie sehen ;WITH... auf Stackoverflow, weil entweder die antwortende Person ein schlampiger Coder ist ODER die antwortende Person davon ausgeht, dass die Person, die die Frage stellt, ein schlampiger Coder ist (und sie behaupten, es sei Letzteres) ist die ehemalige :) Die Definition von "sloppy Coder" hier ist jemand, der nur ein Semikolon verwendet, wenn sie dazu gezwungen sind.

    
onedaywhen 07.03.2011 10:31
quelle
1

Die Verwendung von WITH ist für allgemeine Tabellenausdrücke (CTEs). Sie haben versucht, den CTE als erste Anweisung zu definieren (d. H., Er kann nicht mit anderen Teilen der Abfrage verknüpft werden, also mit dem;)

    
judda 07.03.2011 05:34
quelle