ORA-01427: single-row subquery returns more than one row (einzeilige Unterabfrage liefert mehr als eine Zeile)
OracleWas bedeutet das?
Eine Unterabfrage, von der eine einzelne Zeile erwartet wurde, hat mehr als eine Zeile zurückgegeben. Zum Beispiel hat die Unterabfrage auf der rechten Seite eines Gleichheitsvergleichs (=) mehrere Werte geliefert.
Ursache
Eine Unterabfrage, die mehrere Zeilen liefert, wo = oder eine Zuweisung erwartet wird; eine nicht ausreichend eingegrenzte WHERE-Bedingung; ein nicht eindeutiger Treffer in der Korrelation; eine skalare Unterabfrage in der SELECT-Liste, die mehrere Zeilen liefert.
Lösung
Grenze die Unterabfrage so ein, dass sie eine einzelne Zeile liefert (zusätzliches WHERE, eindeutiger Schlüssel). Werden wirklich mehrere Werte erwartet, verwende IN statt =: WHERE id IN (SELECT id FROM ...). Oder ergänze in der Unterabfrage ein Aggregat (MAX, MIN) oder reduziere sie mit ROWNUM = 1 auf eine Zeile. Führe die Unterabfrage zuerst allein aus und prüfe, wie viele Zeilen sie liefert.
Weitere Einträge zu dieser Datenbank
- ORA-00918column ambiguously defined (Spalte mehrdeutig definiert)
- ORA-06550line/column PLS-... PL/SQL compilation error (PL/SQL-Kompilierfehler)
- ORA-04068existing state of packages has been discarded (bestehender Package-Zustand wurde verworfen)
- ORA-12899value too large for column (Wert zu groß für Spalte)
- ORA-30926unable to get a stable set of rows in the source tables (keine stabile Zeilenmenge in den Quelltabellen)
- ORA-08103object no longer exists (Objekt existiert nicht mehr)
- ORA-01843not a valid month (kein gültiger Monat)