Повечето хора, които използват SQL Server, знаят за конвенцията за добавяне на GO до края на всяка партида от T-SQL изрази. Но може би по-малко известно е, че можете да добавите и цяло число след GO за да посочите колко пъти трябва да се изпълнява партидата.
Пример 1 – Основна употреба
Ето пример за това как работи.
ИЗБЕРЕТЕ GETDATE() КАТО DateTime;GO 3
Резултат:
+------------------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение+--------- ----------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение+--------- ----------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение:0,578 s
Посочих GO 3 което доведе до изпълнение на заявката три пъти. Освен това получавах думите „Начален цикъл на изпълнение“ всеки път, когато заявката се изпълняваше.
Получавам различни резултати за тази заявка в зависимост от това кой инструмент съм използвал за изпълнение на заявката. Това са резултатите, които получих, докато използвах mssql-cli инструмент за команден ред. Частичните секунди са еднакви. Но когато използвах Azure Data Studio, дробните секунди се увеличиха.
Пример 2 – Печат на дата/час
Ето пример, който стартирах с помощта на Azure Data Studio, показващ нарастването на частните секунди.
ДЕКЛАРИРАНЕ @theTime time(7) =GETDATE();PRINT @theTime;GO 5
Резултат:
Започна да изпълнява заявка на ред 4. Начало на цикъла на изпълнение 09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.6233333409:0cu завършване на 09:09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.6233333409:0cu завършване на 09:00:00:06:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 предварително>Пример 3 – Пример за база данни
Ето пример, който вмъква данни в база данни.
СЪЗДАВАНЕ НА ТАБЛИЦА LoopTest( LoopTestId уникален идентификатор НЕ НУЛА ПО ПОДРАЗБИРАНЕ NEWID(), InsertDate datetime2(7) НЕ НУЛА ПО ПОДРАЗБИРАНЕ GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (DEFAULT, DEFAULT, LoopTestROM *FGO);Резултат:
+----------------------------------------+------- ---------------------+| LoopTestId | Вмъкване на дата ||-------------------------------------+-------- ---------------------|| 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 |+---------------------------------------------- +----------------------------+В този случай и двете колони се вмъкват с
DEFAULT, което води до това, че всяка колона се попълва със стойността по подразбиране (която също уточнявам). Първата колона има стойност по подразбиранеNEWID(), функция, която генерира GUID. Втората колона има по подразбиранеGETDATE(), което води до текущата дата и час.