由于查询结果有多行造成,确保查询结果只有一行数据。这样就不会报错了。
【错误例子】
“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10) as enddate from ol_apply a,ol_case e”,报错ORA-01427:单行子查询返回多个行。
解决方法:
查询中肯定有返回多行的情况,试着在子查询中加入rownum<2,也就是限制返回一行数据。
更改后的:
“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10 and rownum=1) as enddate from ol_apply a,ol_case e”。
这个错误是由于你的查询结果有多行造成的,因为你要into给变量a,所以只能查出一行,应该在where条件处控制,确保查询结果只有一样数据。这样就不会报错了。
如果不能确定记录为一行,可以这样写:select 字段1 into 变量a from 表a where 条件 and rownum = 1;
select 字段1
-- into 变量a
from 表A
where 条件
根据条件 查出来多行 字段1
变量适用于单个值 你where条件里检索出来的值可能是多个 这个时候可以把这些值放到游标里
不能用=号 用 in