Повечето хора, които използват 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()
, което води до текущата дата и час.