欢迎光临散文网 会员登陆 & 注册

Oracle异常

2023-03-13 14:28 作者:阿彦绝地反击  | 我要投稿

一、异常

可以挽回的称作异常,不可以挽回的叫错误。

1.引发除0的异常

declare

v_a number:=100;

v_b number;

begin

v_b:=v_a/0;

dbms_output.put_line(v_b);

end;

2.捕获异常

语法

declare

...声明区...

begin

...编辑区...

exception

when 异常类型 then

异常处理

...

end;


练习:捕捉除数是0的异常

除数是0异常类型:zero_divide


declare

v_a number:=100;

v_b number;

begin

v_b:=v_a/0;

dbms_output.put_line(v_b);

exception

when zero_divide then

dbms_output.put_line('您的除数为0了!默认修改为1');

end;


练习:当主键中插入重复数据时的异常捕获【必会】


begin

insert into dept(deptNo,dname,loc) values(40,'进一部','天堂');

exception

when dup_val_on_index then

dbms_output.put_line('出现重复值,插入部门失败');

end;


练习:自定义异常,当部门编号是负数时引发异常,并进行捕获

declare

my_dept_no_ex exception; /*声明异常对象:my_dept_no_ex*/

pragma exception_init(my_dept_no_ex ,-1);  /*初始化异常对象的值,一般异常值是负整数(5位以内)*/

v_deptNo number;/*存储数的部门编号变量声明*/

begin

v_deptNo:=&v_deptNo;/*输入一个部门编号存储在v_deptNo变量中*/

if v_deptNo<0 then /*根据业务判读引发自定义异常的条件*/

raise my_dept_no_ex; /*raise抛出异常对象*/

end if;

insert into dept(deptNo,dname,loc) values(v_deptNo,'忒一部','海洋');

commit;

exception /*异常处理*/

when my_dept_no_ex then /*捕获指定类型的异常对象!*/

dbms_output.put_line('您输入的部门编号不合理,无法注册此部门!');

end;


Oracle异常的评论 (共 条)

分享到微博请遵守国家法律