ORA-01427: single-row subquery returns more than one row(単一行副クエリが複数行を返した)
Oracle意味
1 行を返すことが期待される副クエリが複数行を返した。例えば等価 (=) 比較の右辺の副クエリが複数の値を生成した。
原因
= や代入が期待される箇所での複数行を返す副クエリ、十分に絞り込まれていない WHERE 条件、相関での一意でない一致、SELECT リスト内のスカラー副クエリが複数行を返す。
対処方法
副クエリが 1 行を返すよう絞り込む (追加の WHERE、一意キー)。本当に複数の値が想定されるなら = の代わりに IN を使う: WHERE id IN (SELECT id FROM ...)。または副クエリに集計 (MAX、MIN) を追加するか、ROWNUM = 1 で 1 行に絞る。まず副クエリを単独で実行し、返される行数を確認する。
同じデータベースの他の項目
- ORA-00918column ambiguously defined(列の定義が曖昧)
- ORA-06550line/column PLS-... PL/SQL コンパイルエラー
- ORA-04068existing state of packages has been discarded(パッケージの既存の状態が破棄された)
- ORA-12899value too large for column(列に対して値が大きすぎる)
- ORA-30926unable to get a stable set of rows in the source tables(ソース表の安定した行セットを取得できない)
- ORA-08103object no longer exists(オブジェクトがもう存在しない)
- ORA-01843not a valid month(月が無効)