oracle中的异常

2025-10-20 01:18:39

1、演示一个异常,例如除数为0的异常(10除以0)

DECLARE

str1 number :=10;

BEGIN

  str1 := 10/0 ;

  DBMS_OUTPUT.PUT_LINE(str1);

END;

oracle中的异常

2、运行的时候报错,提示错误信息:第四行除数等于0。在四则运算中除数为0是不允许的,无意义。

oracle中的异常

3、在上述异常中。由于其他原因又不能排除掉除数为0的信息,则可以对这些异常进行捕捉:

EXCEPTION

  WHEN exception1 [or exception2....] THEN

    statement1 [statement12...]...

  [

  WHEN exception3 [or exception4....] THEN

    statement3 [statement14...]...

  ]  

oracle中的异常

4、注释:

EXCEPTION:声明异常块的部分

WHEN :后面接exception1 为异常名称列表,如果发生异常与exception1 匹配是,则执行THEN后面的statement1 

5、则上述例子中可以改为

DECLARE

str1 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;

oracle中的异常

6、上诉语句中,单除数为0时系统自动抛出异常,被EXCEPTION异常块中的ZERO_DIVIDE 所捕捉,匹配成功后则输出相应的语句

oracle中的异常

7、oracle中为每一个错误提供一个错误号和对应的异常名称,oracle中已经定义了一些定义好的常用异常名称,上诉除数为0的异常名称是oracle已经定义好的

oracle中的异常

8、以上为常用的异常错误号和名称,但oracle中不止是这些,可以利用sql语句查询

SELECT * FROM DBA_SOURCE WHERE NAME='STANDARD' AND TEXT LIKE '%EXCEPTION_INIT%'

oracle中的异常

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢