ORACLE触发器自定义异常抛出

Oracle触发器抛出自定义异常

现有学生表

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 student
for each row
declare
num int;
myexp exception;
begin
select count(*) into num from score where sno=:old.sno;
if num>0 then
raise myexp;
end if;
exception
when myexp then raise_application_error(’-20002’, ‘该学生已选课,无法删除’);

end;

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

RAISE_APPLICATION_ERROR(异常码,异常信息)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值