Většina lidí, kteří používají SQL Server, zná konvenci přidávání GO
na konec každé dávky příkazů T-SQL. Ale možná méně známé je, že za GO
můžete přidat také celé číslo určit, kolikrát se má dávka spustit.
Příklad 1 – Základní použití
Zde je příklad, jak to funguje.
SELECT GETDATE() AS DateTime;GO 3
Výsledek:
+-------------------------+| Datum a čas ||-------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Počáteční prováděcí smyčka+---------- -----------------+| Datum a čas ||-------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Počáteční prováděcí smyčka+---------- -----------------+| Datum a čas ||-------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Počáteční cyklus spuštění:0,578 s
Zadal jsem GO 3
což vedlo ke spuštění dotazu třikrát. Při každém spuštění dotazu se mi také zobrazila slova „Začátek spouštěcí smyčky“.
Dostávám různé výsledky pro tento dotaz v závislosti na tom, který nástroj jsem použil ke spuštění dotazu. Toto jsou výsledky, které jsem získal při používání mssql-cli nástroj příkazového řádku. Zlomkové sekundy jsou všechny stejné. Ale když jsem použil Azure Data Studio, zlomkové sekundy se zvýšily.
Příklad 2 – Tisk data/času
Zde je příklad, který jsem spustil pomocí Azure Data Studio, zobrazující přírůstky po zlomcích sekund.
DECLARE @theTime time(7) =GETDATE();PRINT @theTime;GO 5
Výsledek:
Zahájeno provádění dotazu na řádku 4Začátek spouštěcí smyčky09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6260 časy dokončení:0 2 050 0 krát 0. před>Příklad 3 – Příklad databáze
Zde je příklad vkládání dat do databáze.
CREATE TABLE LoopTest( LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (DEFAULT, DEFAULT);GO 20SELECT *FROM LoopTestVýsledek:
+--------------------------------------+------- -----------------------+| LoopTestId | InsertDate ||--------------------------------------+-------- ----------------------|| d6eda0a2-710d-467e-a4cf-41602e161851 | 2020-01-08 09:37:38.4733333 || 0d8b3622-946f-4dce-816e-6123516da4e4 | 2020-01-08 09:37:38.4833333 || b3ac2482-7304-4846-a258-5dc51b2623f9 | 2020-01-08 09:37:38.4866667 || 1744836e-6af6-40c8-ab7e-98ca88e8ac1b | 2020-01-08 09:37:38.5000000 || 91c4858c-0c31-4d99-aba5-3a70424239fd | 2020-01-08 09:37:38.5066667 || f8b3de8b-7dd1-46c3-a7a8-b1af711d676d | 2020-01-08 09:37:38.5133333 || 306467d8-2e5b-4046-8102-a33f6906b41d | 2020-01-08 09:37:38.5233333 || 6cf93d79-5921-498e-ab14-55782284dc12 | 2020-01-08 09:37:38.5333333 || 7bb99e3b-d174-47eb-81b3-46b49982eaad | 2020-01-08 09:37:38.5500000 || c788d046-0c6c-4a2b-b3f1-3415470bf723 | 2020-01-08 09:37:38.5566667 || 52bb8951-8e71-46ac-ab98-1e261751dc5b | 2020-01-08 09:37:38.5600000 || 3a061055-0b1e-405c-aa13-480cdde8291c | 2020-01-08 09:37:38.5666667 || 1cabaf44-ac85-4bcf-8fee-7d349cb56561 | 2020-01-08 09:37:38.5700000 || 0cb3a690-66e9-458d-8c27-b0f44af4211d | 2020-01-08 09:37:38.5766667 || 19719223-eb9f-4477-82cc-e60995e0dcee | 2020-01-08 09:37:38.5800000 || 6da2484d-68c7-43f4-8ffc-968545974a42 | 2020-01-08 09:37:38.5833333 || d644bbed-047f-49ac-98c4-e032bdb4add3 | 2020-01-08 09:37:38.5900000 || 2c215900-0fd8-4889-8115-2a904ac72a61 | 2020-01-08 09:37:38.5933333 || 01ccc184-3657-4298-98a7-b31e158a56e8 | 2020-01-08 09:37:38.5933333 || 9270036f-8821-45c8-aef5-30aec2d4f4b4 | 2020-01-08 09:37:38.6000000 |+--------------------------------------- +-----------------------------+V tomto případě jsou oba sloupce vloženy s
DEFAULT
, což má za následek, že každý sloupec je naplněn svou výchozí hodnotou (kterou také specifikuji). První sloupec má výchozí hodnotuNEWID()
, funkce, která generuje GUID. Druhý sloupec má výchozí hodnotuGETDATE()
, což má za následek aktuální datum a čas.