pl/sql编程----例外

例外的分类:
oracle将例外分为预定义例外,非预定义例外和自定义例外
预定义例外:用于处理常见的oracle错误;预定义例外是由pl/sql所提供的系统例外,当pl/sql应用程序违反了oracle规定的限制时,则会隐含的触发一个内部例外,pl/sql为开发人员提供了二十多个预定义例外;
非预定义例外:用于处理预定义例外不能处理的例外;
自定义例外:用于处理与oracle 错误无关的其他情况;

declare
i caozyxx.caozyxm%type;
begin
select caozyxm into i from caozyxx where caozyxdm = &a;
dbms_output.put_line(i);
end;

如果我们输入了一个表中存在的条件,那么一切正常,但是如果我们输入了不存在的或者错误的条件,在没有例外的情况下,就会报错,我们可以这样处理:

declare
i caozyxx.caozyxm%type;
begin
select caozyxm into i from caozyxx where caozyxdm = &a;
dbms_output.put_line(i);
exception
when no_data_found then
dbms_output.put_line('输入错误'); 
end;

这样的话,如果输入了错误的条件,就会提示输入错误;
介绍几个常见例外:
case_not_found:在开发中,如果在when子句中没有包含必须的条件分子,就会触发case_not_found的例外,既如果查询到的结果不包含在case语句的条件内,那么就会提示这个例外
案例:
create or replace procedure sp_pro(spno number) is
sno caozyxx.caozydm%type;
begin
select caozydm into sno from caozyxx where caozydm = spno;
when sno<0100 then
dbms_output.put_line(‘1111’);
wher sno<0200 then
dbms_output.put_line(‘2222’);
end case;
exception
when case_not_found then
dbms_output.put_line(‘case语句没有与条件相匹配的’);
end;

猜你喜欢

转载自blog.csdn.net/enbaoIT/article/details/89219742