如果無數(shù)據(jù)拋出異常,如果有數(shù)據(jù)打印數(shù)據(jù),我給10號部門,為什么還是會拋出自定義的例外呢
set SERVEROUTPUT ON;
declare
?no_data exception;
?cursor cur_emp(dno number) is select ename from emp where DEPTNO=dno;
?pname emp.ename%type;
begin
?open cur_emp(10);
? loop
? ?fetch cur_emp into pname;
? ?if cur_emp%found then
? ?dbms_output.put_line(pname);
? ?elsif cur_emp%notfound then
? ?raise no_data;
? ?end if;
? end loop;
?close cur_emp;
?exception?
?when no_data then dbms_output.put_line('沒有部門為50號的員工信息');
?when others then dbms_output.put_line('其他例外');
end;
/
2018-07-26
begin
?open cur_emp(10);
? loop
? ?fetch cur_emp into pname;
? ?if cur_emp%found then
? ?dbms_output.put_line(pname);
? ?【elsif cur_emp%notfound then? --語句cur_emp%notfound總會循環(huán)到最后的,所以不適合用來引出異常,用下面的條件可以執(zhí)行
? ?ELSIF PNAME IS NULL THEN--替換此條件可以解決】
? ?raise no_data;
? ?end if;
? ?【exit when cur_emp%notfound;--缺少loop循環(huán)退出條件】
? end loop;
?close cur_emp;
?exception?
?when no_data then dbms_output.put_line('沒有部門為50號的員工信息');
?when others then dbms_output.put_line('其他例外');
end;
2016-09-11
代碼執(zhí)行到最后肯定會沒數(shù)據(jù)的,所以自定義的異常時最后執(zhí)行的。
2016-01-07
?fetch cur_emp into pname;
? ?if cur_emp%found then
? ?dbms_output.put_line(pname);
? ?elsif cur_emp%notfound then
? ?raise no_data;???
好奇怪不理解加粗黑色你為何這么定義。 你這個循環(huán)為什么沒有循環(huán)終止語句呢