1.预定义异常(预知遇到的异常情况:no_data_found)
declarev_sal employees.salary % type;
begin
select salary into v_sal from employees where employee_id = 1001;
dbms_output.put_line(v_sal);
exception
when no_data_found then dbms_output.put_line('查无此人');
end;
2.非预定义异常
declare--定义异常
temp_exception exception;
--将其定义好的异常情况,与标准的oracle错误联系起来,使用exception_int语句
pragma exception_init( temp_exception,-2292);---2292 违反一致性约束的错误代码
begin
delete from employees where employee_id = 100;
exception
--处理异常
when temp_exception
then dbms_output.put_line('违反完整性约束');
end;
3.自定义异常
declareno_result exception;
begin
update employees set salary = salary +100 where employee_id = 1001;
--使用隐式游标,抛出自定义异常
if sql % notfound
then raise no_result;
end if;
exception
when no_result
then dbms_output.put_line('工资太高了');
end;