如:
DECLARE e_nodeptno EXCEPTION;BEGIN NULL;END;
异常的声明跟变量的声明非常相似,其类型为EXCEPTION。不过异常是一种错误的表示形式,而不是一个真正的变量,因此不能在赋值语句或SQL语句中使用异常,但是异常和变量的作用范围和规则是相同的。
预定义异常是当有关Oracle错误产生时,由Oracle隐式抛出的;自定义异常需要显式地使用RAISE进行抛出。
不过RAISE也可以抛出预定义的异常。
如:
DECLARE e_nocomm EXCEPTION; --自定义的异常 v_comm NUMBER (10, 2); --临时保存提成数据的变量 v_empno NUMBER (4) := &empno; --从绑定参数中获取员工信息BEGIN SELECT comm INTO v_comm FROM emp WHERE empno = v_empno; --查询并获取员工提成 IF v_comm IS NULL --如果没有提成 THEN RAISE e_nocomm; --触发异常 END IF;EXCEPTION WHEN OTHERS THEN --OTHERS必须单独出现 DBMS_OUTPUT.put_line ('错误编码:'||SQLCODE||' 错误消息:'||SQLERRM(100)); RAISE; --重新抛出异常 END;
如:
DECLARE e_nocomm EXCEPTION; ...BEGIN ...EXCEPTION WHEN e_nocomm THEN ... WHEN NO_DATA_FOUND THEN ... WHEN OTHERS THEN ...END;
联系客服