DECLARE e_integrity EXCEPTION; PRAGMA EXCEPTION_INIT(e_integrity,-2291); BEGIN UPDATE emp SET deptno = &dno WHERE empno = &eno; EXCEPTION WHEN e_integrity THEN dbms_output.put_line(‘该部门不存在‘); END;
DECLARE e_integrity EXCEPTION; PRAGMA EXCEPTION_INIT(e_integrity,-2291); v_no_emp EXCEPTION; BEGIN UPDATE emp SET deptno = &dno WHERE empno = &eno; IF SQL%NOTFOUND THEN RAISE v_no_emp; END IF; EXCEPTION WHEN e_integrity THEN dbms_output.put_line(‘该部门不存在‘); WHEN v_no_emp THEN dbms_output.put_line(‘该雇员不存在‘); END;
DECLARE v_ename emp.ename%TYPE; BEGIN SELECT ename INTO v_ename FROM emp WHERE sal = &sal; dbms_output.put_line(‘雇员名:‘ || v_ename); EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘不存在工资为:‘ || &sal || ‘的雇员‘); WHEN OTHERS THEN dbms_output.put_line(‘错误号:‘ || SQLCODE); dbms_output.put_line(‘错误消息:‘ || SQLERRM); END;2、RAISE_APPLICATION_ERROR
raise_application_error(error_number,message[,{TRUE | FALSE }]);示例如下:
DECLARE v_comm emp.comm%TYPE; BEGIN SELECT comm INTO v_comm FROM emp WHERE empno = &eno; IF v_comm IS NULL THEN RAISE_APPLICATION_ERROR(-20000,‘该雇员无补助‘); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘该雇员不存在‘); END;
PL/SQL_处理例外2(非预定义异常、自定义异常),布布扣,bubuko.com
原文:http://blog.csdn.net/com185272358/article/details/21785645