当前位置:酷酷问答>百科问答>oracle基础教学:简单的exception处理

oracle基础教学:简单的exception处理

2024-10-16 06:11:02 编辑:zane 浏览量:515

oracle基础教学:简单的exception处理

的有关信息介绍如下:

oracle基础教学:简单的exception处理

在数据开发过程用需要异常处理的地方是很多的,良好的异常处理可以给人一个逻辑清楚的过程。如果你对oracle数据开发中异常处理还不是很熟悉或者你还是新手的话,这篇文章将是很有用的!

首先我们要了解一个单词:exception!它是oracle中的异常类型!oracle中预定义了很多的异常情况。但是常用的也不过几种而已!一般的exception都是伴随这个begin和end的。参考下图:

最常用的异常莫过于when no_data_found了。请看下列例子:

declare

n number;

begin

select 1 into n from dual where 1=3;

exception when no_data_found then

dbms_output.put_line('n not found!');

end;

/

还有一种也很常用when too_many_rows。请看下列例子:

declare

n number;

begin

select id into n

from

(

select 1 id from dual

union

select 2 id from dual

);

exception when too_many_rows then

dbms_output.put_line('too many rows found for n');

end;

/

上面只说了两种异常的情况,若碰到一些不知名的异常应该肿么办呢?其实有一个万能的异常情况:when others! 这个others上面异常都能处理!例如上面的no_data_found换成others也是没问题的,只是没有那么具体而已!看下面的例子:

DECLARE

n NUMBER:=2;

m NUMBER;

BEGIN

m:=n/0;

EXCEPTION WHEN OTHERS THEN

Dbms_Output.put_line('Hey man! Divisor is 0!!!');

END;

/

其实可以把多重异常情况写在一起,因为有时候不知道异常是no_data_found,too_many_rows还是others。看看下面例子就容易理解了:

DECLARE

n NUMBER:=2;

m NUMBER;

BEGIN

m:=n/0;

EXCEPTION

WHEN No_Data_Found THEN

Dbms_Output.put_line('Data is not found!');

WHEN Too_Many_Rows THEN

Dbms_Output.put_line('Too many rows round!');

WHEN OTHERS THEN

Dbms_Output.put_line('Hey man! Divisor is 0!!!');

END;

/

运行的结果肯定是:Hey man! Divisor is 0!!!

还可以自己定义exception哦!为什么要自己定义呢?即使人为制造exception,中断程序或者跳出某个程序段。例子如下:

DECLARE

exception1 EXCEPTION;

BEGIN

IF 1!=1 THEN

Dbms_Output.put_line('Normal!');

ELSE

RAISE exception1;

END IF;

EXCEPTION

WHEN exception1 THEN

Dbms_Output.put_line('EXCEPTION!');

WHEN OTHERS THEN

Dbms_Output.put_line('OTHERS EXCEPTION!');

END;

/

输出结果是:EXCEPTION!

因为我人为raise了一个exception,所以程序直接跳到了when exception1 then里面去了。

好了基础的exception就讲到这里吧!好记忆不如烂笔头,多练几次就记得很牢了!

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/answer/80901.html
热门文章