Erstellen Sie zunächst zwei Tabellen:
CREATE TABLE xyz (Id INT)
CREATE TABLE abc (Id INT)
Bitte beachten Sie den folgenden SQL-Code:
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
Beim Ausführen wird der folgende Fehler ausgegeben:
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.
Und es gibt kein Ergebnis . Alles wie erwartet.
Nun lassen Sie uns den Fehler zu einem Syntaxfehler ändern durch Ersetzen xyz)mit xyz. Hier ist der Fehler:
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'xyz'.
Aber diesmal gibt es ein Ergebnis:
Warum? Was ist los?
