您的位置:首页 > 数据库 > Oracle

117.Oracle数据库SQL开发之 PLSQL编程——异常

2015-11-28 20:31 435 查看
117.Oracle数据库SQL开发之 PLSQL编程——异常
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50086941

异常用于处理PL/SQL代码块中出现的运行时错误。

常见的异常如下:

1.  ZERO_DIVIDE 异常

ZERO_DIVIDE异常在试图用一个数字除以零的时候发生。

执行如下:

store@PDB1> BEGIN

   DBMS_OUTPUT.PUT_LINE(1/0);

    EXCEPTION

    WHENZERO_DIVIDE THEN

   DBMS_OUTPUT.PUT_LINE('Division by zero');

    END;

    /

Division by zero

 

PL/SQL procedure successfully completed.

当异常发生时,程序的控制权将转交给EXCEPTION块,其中的WHEN子句复制检查与何种异常相匹配,然后执行匹配子句中的代码。

2.  DUP_VAL_ON_INDEX异常

如果视图向具有唯一性索引约束的列中插入重复的值,就会引发DUP_VAL_ON_INDEX异常。

例如:

store@PDB1>BEGIN

    INSERT INTO customers(customer_id,first_name,last_name) values ( 1,'Greg','Green');

    EXCEPTION

    WHEN DUP_VAL_ON_INDEX THEN

    DBMS_OUTPUT.PUT_LINE('Duplicate value on anindex');

    END;

    /

Duplicate valueon an index

 

PL/SQL proceduresuccessfully completed.

3.  INVALID_NUMBER异常

当试图将无效的字符串转换成数字时,就会引发INVALID_NUMBER异常。

例如:

store@PDB1> BEGIN

    INSERT INTOcustomers ( customer_id,first_name,last_name) VALUES ('123x','Greg','Green');

    EXCEPTION

    WHENINVALID_NUMBER THEN

   DBMS_OUTPUT.PUT_LINE('Conversion of string to number failed');

    END;

    /

Conversion of string to number failed

 

PL/SQL procedure successfully completed.

4.  OTHERS异常

OTHERS异常可以处理所有异常。

例如:

store@PDB1> BEGIN

   DBMS_OUTPUT.PUT_LINE(1/0);

    EXCEPTION

    WHEN OTHERSTHEN

   DBMS_OUTPUT.PUT_LINE('An exception occurred');

    END;

    /

An exception occurred

 

PL/SQL procedure successfully completed.

因为OTHERS可处理所有的异常,因此必须在EXCEPTION块中所有特定的异常之后使用该异常。如果试图在其他地方使用OTHERS异常,数据库会返回错误PLS-00370。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: