场景1,不使用聚合函数:
declare
v_id emp20.empno%type;
begin
select empno into v_id from emp20 t where t.empno=100;
DBMS_OUTPUT.put_line ('编号为:'||v_id);
exception
when no_data_found then
DBMS_OUTPUT.put_line ('找不到数据');
end;
执行以上代码,输出如下,找不到数据。
执行如下sql语句,查询不到记录。
场景2,使用聚合函数:
declare
v_id emp20.empno%type;
begin
--注意:此处使用了聚合函数min()
select min(empno) into v_id from emp20 t where t.empno=100;
DBMS_OUTPUT.put_line ('编号为:'||v_id);
exception
when no_data_found then
DBMS_OUTPUT.put_line ('找不到数据');
end;
执行如上代码,输出如下
执行如下sql语句,得到空数据。
所以,当使用聚合函数的时候,查询到的是空值,而非无记录导致NO_DATA_FOUND失效。