Tôi luôn luôn làm điều đó khi đăng ở đây hoặc trên StackOverflow bởi vì WITH
- vì từ khóa bị quá tải - lệnh trước đó yêu cầu một dấu chấm phẩy chấm dứt. Nếu tôi dán một mẫu mã sử dụng CTE, chắc chắn một số người dùng sẽ dán nó vào mã hiện có của họ và câu lệnh trước đó sẽ không có dấu chấm phẩy. Vì vậy, mã bị phá vỡ, và tôi nhận được khiếu nại như:
Mã của bạn đã phá vỡ! Tôi nhận được thông báo lỗi này:
Incorrect syntax near 'WITH'
...
Mặc dù tôi muốn tin rằng mọi người đang trở nên tốt hơn về việc luôn chấm dứt các tuyên bố của họ bằng dấu chấm phẩy , tôi thà làm ồn trước tiếng ồn và luôn luôn bao gồm nó. Một số người không thích nó, nhưng <shrug />
. Bạn có thể bao gồm nhiều dấu chấm phẩy trước hoặc sau một tuyên bố hợp lệ như bạn muốn. Điều này hợp lệ:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Vì vậy, không có hại trong việc có thêm một dấu chấm phẩy trước một tuyên bố mà theo định nghĩa đòi hỏi nó. Làm như vậy sẽ an toàn hơn ngay cả khi nó không quá đẹp.
Nó phải được diễn đạt một cách kỳ lạ để hiểu ý, nhưng "không kết thúc một tuyên bố hợp lệ bằng dấu chấm phẩy" thực sự không được chấp nhận kể từ SQL Server 2008. Vì vậy, như tôi mô tả trong bài đăng trên blog tôi liên kết đến ở trên, ngay cả trong trường hợp không bắt buộc phải bỏ qua lỗi, nó nên được sử dụng bất cứ khi nào hợp lệ. Bạn có thể thấy điều này ở đây:
http://msdn.microsoft.com/en-us/l Library / ms143729.aspx
(Tìm kiếm trang cuối cùng cho "dấu chấm phẩy")
Tất nhiên, đó sẽ không phải là SQL Server nếu không có ngoại lệ. Thử đi:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Đó không phải là ngoại lệ duy nhất cho quy tắc nhưng đó là điều tôi thấy không trực quan nhất.