Trong SQL Server, lô là một nhóm gồm một hoặc nhiều câu lệnh T-SQL được gửi cùng lúc từ một ứng dụng đến SQL Server để thực thi.
Nếu bạn gặp lỗi như sau:
Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.
Có thể là do bạn đang kết hợp câu lệnh với các câu lệnh khác trong cùng một lô, điều này không được phép theo lô.
Phần đầu tiên của thông báo lỗi sẽ phụ thuộc vào câu lệnh thực tế mà bạn đang sử dụng trong lô của mình. Trong trường hợp của tôi, đó là CREATE VIEW
, nhưng nó có thể dễ dàng như CREATE PROCEDURE
, CREATE FUNCTION
, v.v. nếu đó là những câu bạn đang sử dụng.
Ví dụ
Dưới đây là ví dụ về một số mã có thể gây ra lỗi này:
DROP VIEW IF EXISTS vAllCustomers;
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
Kết quả:
Msg 111, Level 15, State 1, Line 3 'CREATE VIEW' must be the first statement in a query batch.
Trong trường hợp của tôi, tôi đang cố chạy hai câu lệnh; một DROP VIEW
và một CREATE VIEW
tuyên bố.
Các quy tắc của lô T-SQL nêu rõ rằng CREATE VIEW
không thể kết hợp câu lệnh với các câu lệnh khác trong cùng một lô.
Nói cách khác, CREATE VIEW
có thể là câu lệnh duy nhất trong lô của nó.
Cách sửa lỗi
Chúng tôi có thể sửa lỗi trên bằng cách thêm dấu phân tách lô sau câu lệnh đầu tiên.
Trong SQL Server, GO
từ khóa báo hiệu sự kết thúc của một lô. Cụ thể hơn, các tiện ích SQL Server diễn giải GO
như một tín hiệu rằng họ nên gửi loạt câu lệnh T-SQL hiện tại tới một phiên bản của SQL Server.
Vì vậy, chúng tôi có thể thay đổi câu lệnh trước thành sau:
DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO
Thêm GO
khắc phục sự cố bằng cách tách các câu lệnh thành hai lô riêng biệt.
Lưu ý rằng GO
không thực sự là một phần của T-SQL. Đây là một lệnh được các tiện ích SQL Server công nhận nhằm mục đích tách các câu lệnh thành các lô.
Bạn có thể thay đổi dấu phân tách hàng loạt, tùy thuộc vào công cụ bạn sử dụng để kết nối với SQL Server. Ví dụ:trong SSMS, bạn có thể tìm thấy tùy chọn này bằng cách đi tới: Công cụ > Tùy chọn > Thực thi truy vấn > Máy chủ SQL và tìm một tùy chọn có nội dung như “Chỉ định một từ hoặc ký tự có thể được sử dụng để tách các lô”.