日期:2014-05-17  浏览次数:20757 次

我想在代码中加个exception请问怎么加?
set serveroutput on
declare
cursor cur_s_emp is
select t.last_name, t.first_name, t.salary
from s_emp t
where t.dept_id = &v_dept_id;
cur_s_emp1 cur_s_emp%rowtype;
begin
open cur_s_emp;
loop
fetch cur_s_emp into cur_s_emp1;
exit when cur_s_emp%notfound;
dbms_output.put_line(cur_s_emp1.last_name||cur_s_emp1.first_name ||cur_s_emp1.salary);
end loop;
close cur_s_emp;
end;
/


然后想加个exception
exception
when NO_DATA_FOUND then
dbms_output.put_line('NO_DATA_FOUND-ORA-01403');
when OTHERS then
dbms_output.put_line(cur_s_emp1.last_name||cur_s_emp1.first_name ||cur_s_emp1.salary);


请问应该怎么加进去?

------解决方案--------------------
你逻辑就是错的,改代码有什么用。

循环里指定了游标notfound就自动退出循环,你NO_DATA_FOUND可能捕获到吗?它根本就不会发生。

后面一个更没用,如果你语句有问题,查不出来数据,它能fetch什么值?只有null。那你觉得你后面能打印出来什么? 

游标只要语句是正确的,查不出来数据是不可能抛出异常的,只有select into才会有no_data_found和too_many_rows异常