Đầu tiên tạo hai bảng:
CREATE TABLE xyz (Id INT)
CREATE TABLE abc (Id INT)
Vui lòng quan sát mã SQL sau:
DELETE FROM abc
BEGIN TRAN
EXEC('
INSERT INTO xyz VALUES (1),(2)
DECLARE @x INT = (SELECT Id FROM xyz)
')
INSERT INTO abc VALUES (1)
COMMIT
SELECT * FROM abc
Chạy nó xuất ra lỗi sau:
Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Và không có kết quả . Tất cả như mong đợi.
Bây giờ chúng ta hãy thay đổi lỗi thành lỗi cú pháp bằng cách thay thế xyz)bằng xyz. Đây là lỗi:
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'xyz'.
Nhưng lần này có một kết quả:
Tại sao? Chuyện gì đang xảy ra vậy?
