--异常
--概念
是程序在运行过程中出现的各种错误,导致程序不能正常执行完成。
包括语法错误、程序错误、网络、硬件等故障。
--分类
--ORACLE内置异常
以ORA开头,后面是异常编号
--自定义异常
--异常变量
1)SQLCODE:获取异常编码,如NO_DATA_FOUND异常编码是100,其他自定义异常的编码大于1,内置异常编码小于-1
2)SQLERRM:获取异常信息的
--注意
EXCEPTION代码块只能出现在END之前,EXCEPTION和END之间的所有代码都属于异常处理代码。
--异常在代码块中的书写
DECLARE
--声明部分
BEGIN
--代码块
EXCEPTION --异常处理
WHEN 异常名称 THEN
异常处理代码;
WHEN 异常名称 THEN
异常处理代码;
...
WHEN OTHERS THEN
异常处理代码;
END;
--示例1
DECLARE
V_EMP SCOTT.EMP%ROWTYPE;
BEGIN
SELECT * INTO V_EMP FROM EMP WHERE EMPNO=7219;
DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO||','||V_EMP.ENAME);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('员工不存在');
DBMS_OUTPUT.PUT_LINE(SQLCODE);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-------------------------------------------------------------------------------
--自定义异常
--自定义异常变量
变量名 EXCEPTION; --定义一个异常变量
--抛出异常
1)RAISE 异常变量;
DECLARE
V_EXC EXCEPTION;
BEGIN
RAISE V_EXC; --抛出异常
EXCEPTION --处理异常
WHEN V_EXC THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
2)DBMS_STANDARD.RAISE_APPLICATION_ERROR(异常编码,'异常信息'); --一般为业务异常或应用异常
自定义异常编码取值范围-2000~20999之间
BEGIN
DBMS_STANDARD.RAISE_APPLICATION_ERROR(-20003,'我的异常信息');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--异常绑定
异常变量 EXCEPTION; --定义一个自定义异常
PRAGMA EXCEPTION_INIT(自定义异常名,异常编码); --绑定异常到自定义异常
--示例1
DECLARE
V_EXC EXCEPTION;
PRAGMA EXCEPTION_INIT(V_EXC,-00001); --将ORA-00001异常绑定到自定义异常V_EXC上
BEGIN
INSERT INTO DEPT VALUES(10,'A','B');
EXCEPTION
WHEN V_EXC THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
PL/SQL编程---异常
最新推荐文章于 2022-08-02 16:37:36 发布