Trong bản cài đặt SQL Server 2008 R2, nó đơn giản không biên dịch. Trình phân tích cú pháp than phiền về việc có cú pháp không chính xác gần =
.
Tôi tin rằng nó phải có một cái gì đó để làm với việc phân bổ giá trị trộn và truy xuất dữ liệu trong một câu lệnh SELECT, không được phép trong SQL Server: bạn có thể có một hoặc khác. Vì khi gán giá trị, tập hợp hàng không được trả về nhưng biến vị ngữ EXISTS mong đợi là, không thể cho phép chuyển nhượng trong ngữ cảnh đó, vì vậy, để tránh nhầm lẫn, có lẽ, giới hạn phải được áp dụng rõ ràng.
Cách giải quyết của bạn, mà bạn đang nói đến trong nhận xét, là một phong nha, nhưng có thể không hoạt động tốt ở đâu đó ở giữa đợt khi biến đã có giá trị trước khi gán. Vì vậy, tôi có lẽ sẽ sử dụng workaround này thay vì:
SELECT @myvar = ...
IF @@ROWCOUNT > 0 ...
As per MSDN, hệ thống chức năng @@ROWCOUNT
trả về số hàng đọc bởi truy vấn.
Nguồn
2011-12-22 06:51:27
Ok workaround đơn giản của tôi mà tôi sử dụng là CHỌN @myvar = .... và sau đó làm một IF (@myvar <> null) . Điều này giải quyết vấn đề của tôi và thậm chí làm cho nó hợp lý hơn nhưng Im vẫn quan tâm để biết Nếu tôi có thể gán nó. –
Đoán của tôi là không, vì câu lệnh gán không trả về giá trị boolean thỏa mãn NẾU EXISTS – Sparky