例外
例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。
系统定义例外
- No_data_found:没有找到数据
- Too_many_rows:select …into语句匹配多个行
- Zero_Divide:被零除
- Value_error:算数或转换错误
- Timeout_on_resource:在等待资源时发生超时
示例:被0除
declare
pnum number;
begin
pnum := 1/0;
exception
when zero_divide then dbms_output.put_line('1: 0不能做分母');
dbms_output.put_line('2: 0不能做分母');
when others then dbms_output.put_line('其他例外');
end;
自定义例外
用户可以自定义异常,在声明中来定义异常
DECLARE
自定义异常名 exception;
DECLARE
My_job char(10);
v_sal emp.sal%type;
No_data exception;
cursor c1 is select distinct job from emp order by job;
示例:查询部门号是50的员工
declare
no_emp_found exception;
cursor pemp is
select t.ename from emp t where t.deptno = 50;
pename emp.ename%type;
begin
open pemp;
fetch pemp
into pename;
if pemp%notfound then
raise no_emp_found;
end if;
close pemp;
exception
when no_emp_found then
dbms_output.put_line('没有找到员工');
when others then
dbms_output.put_line('其他错误');
end;