您的位置首页快问快答

oracle基础教学简单的exception处理

oracle基础教学简单的exception处理

的有关信息介绍如下:

oracle基础教学简单的exception处理

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

2.最常用的异常莫过于whenno_data_found了。请看下列例子:

declare

nnumber;

begin

select1intonfromdualwhere1=3;

exceptionwhenno_data_foundthen

dbms_output.put_line("nnotfound!");

end;

/

3.还有一种也很常用whentoo_many_rows。请看下列例子:

declare

nnumber;

begin

selectidinton

from

(

select1idfromdual

union

select2idfromdual

);

exceptionwhentoo_many_rowsthen

dbms_output.put_line("toomanyrowsfoundforn");

end;

/

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

DECLARE

nNUMBER:=2;

mNUMBER;

BEGIN

m:=n/0;

EXCEPTIONWHENOTHERSTHEN

Dbms_Output.put_line("Heyman!Divisoris0!!!");

END;

/

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

DECLARE

nNUMBER:=2;

mNUMBER;

BEGIN

m:=n/0;

EXCEPTION

WHENNo_Data_FoundTHEN

Dbms_Output.put_line("Dataisnotfound!");

WHENToo_Many_RowsTHEN

Dbms_Output.put_line("Toomanyrowsround!");

WHENOTHERSTHEN

Dbms_Output.put_line("Heyman!Divisoris0!!!");

END;

/

运行的结果肯定是:Heyman!Divisoris0!!!

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

DECLARE

exception1EXCEPTION;

BEGIN

IF1!=1THEN

Dbms_Output.put_line("Normal!");

ELSE

RAISEexception1;

ENDIF;

EXCEPTION

WHENexception1THEN

Dbms_Output.put_line("EXCEPTION!");

WHENOTHERSTHEN

Dbms_Output.put_line("OTHERSEXCEPTION!");

END;

/

输出结果是:EXCEPTION!

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

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