当没有找到数据时,我对管理基于 sql 语句的变量赋值的情况存在疑问。首先,这些块是等价的吗?如果这是真的,两者中的一个更好吗?
declare
nonsense number;
begin
select nvl((select 1 from dual where 1 <> 1),2) into nonsense from dual;
dbms_output.put_line(nonsense);
end;
declare
nonsense number;
begin
begin
select 1 into nonsense from dual where 1<>1;
exception when no_data_found then
nonsense := 2;
end;
dbms_output.put_line(nonsense);
end;