在我们编写PL/SQL代码时,使用select into 时如果查询没有值,会报ORA-01403:no data found 错误。可以通过判断count(*) 进行判断查询是否有结果,但是这样会多一次查询表。采用如下方式可以避免访问两次表:
declare
v_name dept.dname%type;
v_loc dept.loc%type;
begin
select r.dname, r.loc
into v_name, v_loc
from dual
left join (select d.dname, d.loc from dept d where d.deptno = 40) r on 1 = 1;
if v_name is null then
dbms_output.put_line('v_name is null');
else
dbms_output.put_line('v_name value is :' || v_name);
end if;
end;
如果大家有更好的方式欢迎讨论!