Hầu hết những người sử dụng SQL Server đều biết về quy ước thêm GO
vào cuối mỗi lô câu lệnh T-SQL. Nhưng có lẽ ít được biết đến hơn, là bạn cũng có thể thêm một số nguyên sau GO
để chỉ định số lần lô sẽ chạy.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ về cách nó hoạt động.
CHỌN GETDATE () AS DateTime; ĐI 3
Kết quả:
+ ------------------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Vòng lặp thực thi bắt đầu + --------- ---------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Vòng lặp thực thi bắt đầu + --------- ---------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Bắt đầu thực thi vòng lặp Thời gian:0,578 giây
Tôi đã chỉ định GO 3
dẫn đến truy vấn chạy ba lần. Tôi cũng nhận được các từ “Bắt đầu vòng lặp thực thi” mỗi khi truy vấn chạy.
Tôi nhận được các kết quả khác nhau cho truy vấn này tùy thuộc vào công cụ tôi đã sử dụng để chạy truy vấn. Đây là những kết quả tôi nhận được khi sử dụng mssql-cli công cụ dòng lệnh. Các giây phân số đều giống nhau. Nhưng khi tôi sử dụng Azure Data Studio, số giây phân số tăng lên.
Ví dụ 2 - Ngày / Giờ in
Dưới đây là một ví dụ mà tôi đã chạy bằng Azure Data Studio hiển thị số giây phân số tăng dần.
DECLARE @theTime time (7) =GETDATE (); PRINT @theTime; GO 5
Kết quả:
Đã bắt đầu thực hiện truy vấn tại Dòng 4 Vòng lặp thực thi bắt đầu09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6266667 Hoàn thành thực thi hàng loạt 5 lần ... Tổng thời gian thực thi:00:00:00.022Ví dụ 3 - Ví dụ về Cơ sở dữ liệu
Dưới đây là một ví dụ chèn dữ liệu vào cơ sở dữ liệu.
CREATE TABLE LoopTest (LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID (), InsertDate datetime2 (7) NOT NULL DEFAULT GETDATE ()); GOINSERT LoopTest (LoopTestId, InsertDate) CÁC GIÁ TRỊ (DEFAULT, DEFAULT * FROM); ĐI 20SKết quả:
+ -------------------------------------- + ------- ---------------------- + | 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 | + -------------------------------------- + ----------------------------- +Trong trường hợp này, cả hai cột đều đang được chèn bằng
DEFAULT
, dẫn đến mỗi cột được điền với giá trị mặc định của nó (mà tôi cũng chỉ định). Cột đầu tiên có giá trị mặc định làNEWID()
, một hàm tạo GUID. Cột thứ hai có mặc định làGETDATE()
, dẫn đến ngày và giờ hiện tại.