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就讲到这里吧!好记忆不如烂笔头,多练几次就记得很牢了!