【预定义异常】
declare
v_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;
【非预定义异常】
declare
--定义异常
temp_exception exception;
--将其定义好的异常情况,与标准的oracle错误联系起来,使用exception_int语句
pragma exception_init(temp_exception,-2292);
begin
delete from employees where employee_id = 100;
exception
--处理异常
when temp_exception
then dbms_output.put_line('违反完整性约束');
end;
【自定义异常】
declare
no_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;