512: Die Unterabfrage hat mehr als einen Wert zurückgegeben.
Fehlermeldung:
Meldung 512, Ebene 16, Status 1, Zeile 1
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn durch eine Unterabfrage (korreliert oder nicht korreliert), mehr als eine einzigen Wert an die aufrufende Abfrage zurückzugeben.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Die Unterabfrage muß so umformuliert werden, daß sie nur genau einen Wert zurückgibt.
Versionen:
Alle Versionen von SQL Server.
Beispiele:
SELECT o.*
FROM Northwind.dbo.Orders o
WHERE o.OrderDate =
(SELECT OrderDate
FROM Northwind.dbo.Orders)
Anmerkungen:
In der obigen Abfrage liefert die Unterabfrage die Spalte OrderDate für alle Zeilen der Tabelle Orders zurück. Dies löst den Fehler aus. Eine mögliche Neuformulierung der Abfrage könnte so aussehen:
SELECT o.*
FROM Northwind.dbo.Orders o
WHERE o.OrderDate =
(SELECT MAX(OrderDate)
FROM Northwind.dbo.Orders)
Da die Aggregatfunktion MAX() garantiert stets nur einen skalaren Wert zurückgibt, gibt auch die Unterabfrage nun nur einen Wert zurück und ist damit syntaktisch zulässig.