ORA-01427: single-row subquery returns more than one row (une sous-requête mono-ligne renvoie plusieurs lignes)
OracleQue signifie cette erreur ?
Une sous-requête censée renvoyer une seule ligne en a renvoyé plusieurs. Par exemple, la sous-requête à droite d'une comparaison d'égalité (=) a produit plusieurs valeurs.
Cause
Sous-requête renvoyant plusieurs lignes là où = ou une affectation est attendu ; condition WHERE insuffisamment restrictive ; correspondance non unique dans la corrélation ; sous-requête scalaire de la liste SELECT renvoyant plusieurs lignes.
Comment la corriger
Restreignez la sous-requête pour qu'elle renvoie une seule ligne (WHERE supplémentaire, clé unique). Si plusieurs valeurs sont réellement attendues, utilisez IN au lieu de = : WHERE id IN (SELECT id FROM ...). Ou ajoutez une agrégation à la sous-requête (MAX, MIN), ou réduisez-la à une ligne avec ROWNUM = 1. Exécutez d'abord la sous-requête seule et vérifiez combien de lignes elle renvoie.
Autres entrées pour ce moteur
- ORA-00918column ambiguously defined (colonne définie de façon ambiguë)
- ORA-06550line/column PLS-... PL/SQL compilation error (erreur de compilation PL/SQL)
- ORA-04068existing state of packages has been discarded (l'état existant des packages a été supprimé)
- ORA-12899value too large for column (valeur trop grande pour la colonne)
- ORA-30926unable to get a stable set of rows in the source tables (impossible d'obtenir un ensemble stable de lignes dans les tables source)
- ORA-08103object no longer exists (l'objet n'existe plus)
- ORA-01843not a valid month (mois invalide)