ORA-01427: single-row subquery returns more than one row(单行子查询返回多个行)
Oracle含义
预期返回单行的子查询返回了多行。例如,等值(=)比较右侧的子查询产生了多个值。
原因
在需要 = 或赋值的地方子查询返回了多行;WHERE 条件不够精确;关联条件中的匹配不唯一;SELECT 列表中的标量子查询返回多行。
解决方法
缩小子查询范围,使其只返回一行(附加 WHERE、唯一键)。如果确实需要多个值,用 IN 代替 =:WHERE id IN (SELECT id FROM ...)。或者在子查询中添加聚合(MAX、MIN),或用 ROWNUM = 1 限制为一行。先单独运行子查询,检查其返回的行数。
同一数据库的其他条目
- ORA-00918column ambiguously defined(列定义不明确)
- ORA-06550line/column PLS-... PL/SQL compilation error(行/列 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(无效的月份)