1、演示一个异常,例如除数为0的异常(10除以0)DECLAREstr1 number :=10;BEGIN str1 := 10/0 ; DBMS_OUTPUT.PUT_LINE(str1);END;
2、运行的时候报错,提示错误信息:第四行除数等于0。在四则运算中除数为0是不允许的,无意义。
3、在上述异常中。由于其他原因又不能排除掉除数为0的信息,则可以对这些异常进行捕捉:EXCEPTION WHEN exception1 [or exception2....] THE绿覆冗猩N statement1 [statement12...]... [ WHEN exception3 [or exception4....] THEN statement3 [statement14...]... ]
4、注释:EXCEPTION:声明异常块的部分WHEN :后面接exception1 为异常名称列表,如果发生异常与exception1 匹配是,则执行THEN后面的statement1
5、则上述例子中可以改为DECLAREstr1 number :=10;BEGIN str1 := 10/0 ; DBMS_OUTPUT.霸烹钟爷PUT_LINE(str1); EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE('除数为0,默认用1代替,结果为'||10/1);END;
6、上诉语句中,单除数为0时系统自动抛出异常,被EXCEPTION异常块中的ZERO_DIVIDE 所捕捉,匹配成功后则输出相应的语句
7、oracle中为每一个错误提供一个错误号和对应的异常名称,oracle中已经定义了一些定义好的常用异常名称,上诉除数为0的异常名称是oracle已经定义好的
8、以上为常用的异常错误号和名称,但oracle中不止是这些,可以利用sql语句溽朽孑臾查询SELECT * FROM 肛舀辨乔DBA_SOURCE WHERE NAME='STANDARD' AND TEXT LIKE '%EXCEPTION_INIT%'