Kebanyakan orang yang menggunakan SQL Server, tahu tentang konvensi penambahan GO
ke akhir setiap kumpulan pernyataan T-SQL. Tetapi mungkin yang kurang umum diketahui, adalah Anda juga dapat menambahkan bilangan bulat setelah GO
untuk menentukan berapa kali batch harus dijalankan.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh cara kerjanya.
SELECT GETDATE() AS DateTime;GO 3
Hasil:
+-------------------------+| DateTime ||------------------------|| 08-01-2020 09:26:31.663 |+--------------+Mulai eksekusi loop+--------- ----------------+| DateTime ||------------------------|| 08-01-2020 09:26:31.663 |+--------------+Mulai eksekusi loop+--------- ----------------+| DateTime ||------------------------|| 08-01-2020 09:26:31.663 |+--------------+Mulai eksekusi loopWaktu:0.578s
Saya menentukan GO 3
yang mengakibatkan kueri berjalan tiga kali. Saya juga mendapatkan kata-kata “Beginning execution loop” setiap kali kueri dijalankan.
Saya mendapatkan hasil yang berbeda untuk kueri ini tergantung pada alat yang saya gunakan untuk menjalankan kueri. Ini adalah hasil yang saya dapatkan saat menggunakan mssql-cli alat baris perintah. Detik pecahan semuanya sama. Namun saat saya menggunakan Azure Data Studio, detik pecahan bertambah.
Contoh 2 – Cetak Tanggal/Waktu
Berikut adalah contoh yang saya jalankan menggunakan Azure Data Studio yang menunjukkan peningkatan pecahan detik.
DECLARE @theTime time(7) =GETDATE();PRINT @theTime;GO 5
Hasil:
Mulai mengeksekusi kueri di Baris 4Memulai eksekusi loop09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6266667Eksekusi batch selesai 5 kali...Total waktu eksekusi:00:00:00.022Contoh 3 – Contoh Basis Data
Berikut ini contoh memasukkan data ke dalam database.
BUAT TABEL LoopTest( LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (DEFAULT, DEFAULT);GO 20SELECT *FROM LoopTest;GOHasil:
+--------------------------------------+------- -----------------------+| LoopTestId | InsertDate ||--------------------------------------+-------- ----------|| d6eda0a2-710d-467e-a4cf-41602e161851 | 08-01-2020 09:37:38.47333333 || 0d8b3622-946f-4dce-816e-6123516da4e4 | 08-01-2020 09:37:38.48333333 || 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.1333333 || 306467d8-2e5b-4046-8102-a33f6906b41d | 08-01-2020 09:37:38.5233333 || 6cf93d79-5921-498e-ab14-55782284dc12 | 08-01-2020 09:37:38.53333333 || 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.560000 || 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.58333333 || d644bbed-047f-49ac-98c4-e032bdb4add3 | 08-01-2020 09:37:38.5900000 || 2c215900-0fd8-4889-8115-2a904ac72a61 | 08-01-2020 09:37:38.59333333 || 01ccc184-3657-4298-98a7-b31e158a56e8 | 08-01-2020 09:37:38.59333333 || 9270036f-8821-45c8-aef5-30aec2d4f4b4 | 08-01-2020 09:37:38.6000000 |+-------------------------------------- +------------------------------+Dalam hal ini, kedua kolom disisipkan dengan
DEFAULT
, yang menghasilkan setiap kolom diisi dengan nilai defaultnya (yang juga saya tentukan). Kolom pertama memiliki nilai defaultNEWID()
, fungsi yang menghasilkan GUID. Kolom kedua memiliki defaultGETDATE()
, yang menghasilkan tanggal dan waktu saat ini.