Ich war immer verwirrt darüber, wann ich nach Befehlen das Schlüsselwort GO verwenden sollte und ob am Ende von Befehlen ein Semikolon erforderlich ist. Was sind die Unterschiede und warum / wann sollte ich sie verwenden?
Wenn ich das Generate-Skript in SQL Server Management Studio ausführe, scheint es überall GO zu verwenden, aber nicht das Semikolon.
sql
sql-server
Hades
quelle
quelle
Antworten:
GO
bezieht sich nur auf SSMS - es ist kein tatsächliches Transact SQL, es weist SSMS lediglich an, die SQL-Anweisungen nacheinanderGO
in einzelnen Stapeln nacheinander zu senden .Das
;
ist ein SQL-Anweisungsbegrenzer, aber zum größten Teil kann die Engine interpretieren, wo Ihre Anweisungen aufgeteilt sind.Die Hauptausnahme und der Ort, an dem
;
das am häufigsten verwendet wird, ist vor einer Common Table Expression-Anweisung.quelle
GO
nicht T-SQL - Part während;
istMERGE
Anweisung muss durch ein Semikolon abgeschlossen werden.;
es veraltet ist, NICHT verwendet zu werden, ist veraltet, dh es wird laut Quelle obligatorisch.Der Grund, warum in generierten DDL-Skripten so viele GOs angezeigt werden, liegt in der folgenden Regel für Stapel.
Einer der Anwendungsfälle für generierte DDL besteht darin, mehrere Objekte in einer einzigen Datei zu generieren. Aus diesem Grund muss ein DDL-Generator in der Lage sein, Stapel zu generieren. Wie andere gesagt haben, beendet die GO-Anweisung den Stapel.
quelle
GEHEN
Go ist ein Batch-Separator. Dies bedeutet, dass alles in diesem Stapel lokal für diesen bestimmten Stapel ist.
Deklarationen von Variablen, Tabellenvariablen usw. gelten nicht für
GO
Anweisungen.# Temp-Tabellen sind lokal für eine Verbindung, sodass sie sich über GO-Anweisungen erstrecken.
Semikolon
Ein Semikolon ist ein Anweisungsabschluss. Dies wird lediglich verwendet, um zu identifizieren, dass eine bestimmte Anweisung beendet wurde.
In den meisten Fällen reicht die Anweisungssyntax selbst aus, um das Ende einer Anweisung zu bestimmen.
CTEs verlangen jedoch, dass das WITH die erste Anweisung ist, sodass Sie vor dem WITH ein Semikolon benötigen.
quelle
MERGE
Anweisung muss durch ein Semikolon abgeschlossen werden.Sie sollten ein Semikolon verwenden, um jede SQL-Anweisung zu beenden. Dies ist in den SQL-Standards definiert.
Sicher, in SQL Server können Sie häufig den Anweisungsabschluss weglassen, aber warum sollten Sie schlechte Gewohnheiten entwickeln?
Wie andere bereits betont haben, muss die Anweisung vor einem Common Table Expression (CTE) mit einem Semikolon abgeschlossen werden. Infolgedessen sehen wir bei Leuten, die den Semikolon-Terminator nicht vollständig angenommen haben, Folgendes:
was ich wirklich seltsam finde. Ich nehme an, dass es in einem Online-Forum sinnvoll ist, wenn Sie nicht sagen können, in welche Qualität der Code eingefügt wird.
Zusätzlich muss eine
MERGE
Anweisung durch ein Semikolon abgeschlossen werden. Sehen Sie hier ein Muster? Dies sind einige der neueren Ergänzungen zu TSQL, die den SQL-Standards genau folgen. Es sieht so aus, als würde das SQL Server-Team die Verwendung des Semikolon-Terminators vorschreiben.quelle
GO ist ein Batch-Terminator, ein Semikolon ist ein Anweisungs-Terminator.
Sie verwenden GO, wenn Sie mehrere create proc-Anweisungen in einem Skript haben möchten, da create proc die erste Anweisung in einem Stapel sein muss. Wenn Sie allgemeine Tabellenausdrücke verwenden, muss die Anweisung davor mit einem Semikolon abgeschlossen werden
quelle
MERGE
Anweisung muss durch ein Semikolon abgeschlossen werden.