Oracle触发器抛出自定义异常

来源:互联网 发布:php oa系统源码 编辑:程序博客网 时间:2024/06/06 08:54

现有学生表

student(sno int,sname varchar2(20))

成绩表

score(sno int,cno varchar2(10),degree number)


给student编写一个触发器,当删除一个学生信息时将触发该触发器,判断该学生是否已经选课,如果该学生已经选课。将激发一个异常,把无法删除的信息返回给用户。

create or replace trigger tri_delete_student before delete on studentfor each rowdeclare num int;myexp exception;beginselect count(*) into num from score where sno=:old.sno;if num>0 then raise myexp;end if;exceptionwhen myexp then raise_application_error('-20002', '该学生已选课,无法删除');end;

下面时运行结果


在Oracle中,遇到的系统异常都有对应的异常码,在应用系统开发中,用户自定义的异常也可以指定一个异常码和异常信息,Oracle系统为用户预留了自定义异常码,其范围介于-20000到-20999之间的负整数。引发应用程序异常的语法是:

RAISE_APPLICATION_ERROR(异常码,异常信息)



1 0
原创粉丝点击