PL/SQL异常处理
PL/SQL块分为3个部分:
声明部分,可执行部分,异常处理部分。
plsql的异常处理和Java的异常处理类似
1.PL/SQL异常
在程序运行出现错误时叫做异常。
发生异常后,语句将停止执行,控制权转移到PL/SQL块的异常处理部分。
2种异常类型
1.预定义异常
PL/SQL代码违反Oracle规则或超出系统限制,隐式触发。
2.用户自定义异常
用户在PL/SQL块的声明部分定义的异常,RAISE显式触发。
declare
emp_name emp.ename%type;
begin
select ename into emp_name from emp where empno=1;
dbms_output.put_line(emp_name);
exception
-- 预定义异常
when no_data_found then
dbms_output.put_line('人员不存在');
end;
/
-- 用户自定义异常
declare
emp_hiredate emp.hiredate%type;
excep1 exception;
begin
select hiredate into emp_hiredate from emp where empno = 7369;
if emp_hiredate > to_date('19770616', 'yyyymmdd') then
raise excep1;
else
dbms_output.put_line('入职时间正常');
end if;
exception
when excep1 then
dbms_output.put_line('入职时间异常');
end;
/
2.RAISE_APPLICATION_ERROR
创建用户定义的错误信息
错误编号必须在-20000~-20999之间
错误信息长度可长达2048Bytes
RAISE_APPLICATION_ERROR(error_number, error_message);
查看效果,可将上述代码
dbms_output.put_line(‘入职时间异常’);
替换为
raise_application_error(-20001, ‘日期错误’);