下面是两个异常处理存储过程:v_error1和v_error2,v_error1可以触发异常处理,而v_error2则不能处理异常处理。
create or replace procedure v_error1(p_username varchar2)
as
v_name varchar2(10);
begin
select username into v_name from dba_users where upper(username)=upper(p_username);
dbms_output.put_line(v_name);
exception
when others then
raise_application_error(-20001,'没有要找的记录!');
end;
create or replace procedure v_error2(p_username varchar2)
as
v_name varchar2(10);
begin
select username into v_name from dba_users where upper(username)=upper(p_username);
if v_name is not null then
dbms_output.put_line(v_name);
else
raise_application_error(-20001,'没有要找的记录!');
end if ;
end;
注:如果select语句没有返回数据(v_name为空),按说应该执行raise_application_error(),但结果并不是这样,则是根本没有执行if语句。
阅读(1689) | 评论(0) | 转发(0) |