oracle的异常
1、异常的属性;
Oracle中的脾讨宿异常有两个属性:sqlerrm/sqlcode;
测试属性;


2、另一种合法的情况:只有查询结果为一条记录,就不会抛出异常;

3、也会得到同样的结果;
有异常出现的情况;


4、非预定义异常;
只有编号,没有名字,所以这样的异常是不能直接使用;只有爬脾给这个编号起个名字,才能使用;
对“在从表中添加的记录里,在外键列中出现了主表中的主键列中没有的值”出现的编号为-2291的异常进行非预定义;


5、自定义异常;
Oracle中的自定义异常,是根据业务逻辑,来自行设置的异常;既没有名称,也没有编号;
在三类异常中,只有自定义异常可以将异常抛出;raise age_exp;
当年龄小于0时,会将异常抛出;
6、declare
age number(4):=0;
--给非预定义异常命名;
age_exp exception;
--让非定义异常名称与异常编号关联;
pragma exception_init(age_exp,-30002);
begin
age:= &age;
--if判断相当于try块;
if age<0 then
raise age_exp;
end if;
insert into cc values(xx(100),'aaaa',age);
exception
when age_exp then
show(sqlerrm);
show(sqlcode);
when others then
show(sqlerrm);
show(sqlcode);
end;
/
与Java中的异常蕉离一样,当年龄合法时,异常处理机制不起作用;

7、当年龄不合法,异常处理机制才会起作用,对发生的异常进行处理;
declare
age number(4):=0;
--给非预定义异常命名;
age_exp exception;
--让非定义异常名称与异常编号关联;
pragma exception_init(age_exp,-20005);
begin
age:= &age;
--if判断相当于try块;
if age<0 then
raise age_exp;
end if;
insert into cc values(xx(100),'aaaa',age);
exception
when age_exp then
show('年龄无效!');
show(sqlcode);
when others then
show('other exception...');
end;
/
