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。