Die meisten Benutzer von SQL Server kennen die Konvention zum Hinzufügen von GO
bis zum Ende jedes Stapels von T-SQL-Anweisungen. Aber vielleicht weniger bekannt ist, dass Sie auch eine Ganzzahl nach GO
hinzufügen können um anzugeben, wie oft der Stapel ausgeführt werden soll.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel dafür, wie es funktioniert.
SELECT GETDATE() AS DateTime;GO 3
Ergebnis:
+-------------------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Ausführungsschleife beginnen+--------- ----------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Ausführungsschleife beginnen+--------- ----------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Beginn der AusführungsschleifeZeit:0,578s
Ich habe GO 3
angegeben was dazu führte, dass die Abfrage dreimal ausgeführt wurde. Außerdem erhielt ich jedes Mal, wenn die Abfrage ausgeführt wurde, die Worte „Ausführungsschleife wird gestartet“.
Ich erhalte unterschiedliche Ergebnisse für diese Abfrage, je nachdem, mit welchem Tool ich die Abfrage ausgeführt habe. Dies sind die Ergebnisse, die ich bei der Verwendung von mssql-cli erhalten habe Kommandozeilen-Tool. Die Sekundenbruchteile sind alle gleich. Aber als ich Azure Data Studio verwendet habe, wurden die Sekundenbruchteile erhöht.
Beispiel 2 – Datum/Uhrzeit drucken
Hier ist ein Beispiel, das ich mit Azure Data Studio ausgeführt habe und das die Erhöhung der Sekundenbruchteile zeigt.
DECLARE @theTime time(7) =GETDATE();PRINT @theTime;GO 5
Ergebnis:
Ausführung der Abfrage in Zeile 4 gestartet Beginn der Ausführungsschleife09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6266667Batch-Ausführung fünfmal abgeschlossen...Gesamtausführungszeit:00:00:00.022Beispiel 3 – Ein Datenbankbeispiel
Hier ist ein Beispiel, das Daten in eine Datenbank einfügt.
CREATE TABLE LoopTest( LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (STANDARD, STANDARD);GO 20SELECT *FROM LoopTest;GOErgebnis:
+-------------------------------------+------- ----------------------+| LoopTestId | Einfügedatum ||--------------------------------------------------+-------- ---------------------|| d6eda0a2-710d-467e-a4cf-41602e161851 | 08.01.2020 09:37:38.4733333 || 0d8b3622-946f-4dce-816e-6123516da4e4 | 08.01.2020 09:37:38.4833333 || b3ac2482-7304-4846-a258-5dc51b2623f9 | 08.01.2020 09:37:38.4866667 || 1744836e-6af6-40c8-ab7e-98ca88e8ac1b | 08.01.2020 09:37:38.5000000 || 91c4858c-0c31-4d99-aba5-3a70424239fd | 08.01.2020 09:37:38.5066667 || f8b3de8b-7dd1-46c3-a7a8-b1af711d676d | 08.01.2020 09:37:38.5133333 || 306467d8-2e5b-4046-8102-a33f6906b41d | 08.01.2020 09:37:38.5233333 || 6cf93d79-5921-498e-ab14-55782284dc12 | 08.01.2020 09:37:38.5333333 || 7bb99e3b-d174-47eb-81b3-46b49982eaad | 08.01.2020 09:37:38.5500000 || c788d046-0c6c-4a2b-b3f1-3415470bf723 | 08.01.2020 09:37:38.5566667 || 52bb8951-8e71-46ac-ab98-1e261751dc5b | 08.01.2020 09:37:38.5600000 || 3a061055-0b1e-405c-aa13-480cdde8291c | 08.01.2020 09:37:38.5666667 || 1cabaf44-ac85-4bcf-8fee-7d349cb56561 | 08.01.2020 09:37:38.5700000 || 0cb3a690-66e9-458d-8c27-b0f44af4211d | 08.01.2020 09:37:38.5766667 || 19719223-eb9f-4477-82cc-e60995e0dcee | 08.01.2020 09:37:38.5800000 || 6da2484d-68c7-43f4-8ffc-968545974a42 | 08.01.2020 09:37:38.5833333 || d644bbed-047f-49ac-98c4-e032bdb4add3 | 08.01.2020 09:37:38.5900000 || 2c215900-0fd8-4889-8115-2a904ac72a61 | 08.01.2020 09:37:38.5933333 || 01ccc184-3657-4298-98a7-b31e158a56e8 | 08.01.2020 09:37:38.5933333 || 9270036f-8821-45c8-aef5-30aec2d4f4b4 | 2020-01-08 09:37:38.6000000 |+-------------------------------------- +-------------------------------------+In diesem Fall werden beide Spalten mit
DEFAULT
eingefügt , was dazu führt, dass jede Spalte mit ihrem Standardwert gefüllt wird (den ich auch festlege). Die erste Spalte hat einen Standardwert vonNEWID()
, eine Funktion, die eine GUID generiert. Die zweite Spalte hat den StandardwertGETDATE()
, was das aktuelle Datum und die aktuelle Uhrzeit ergibt.