1.自定义异常
DECLARE
--自定义异常
e_integrity EXCEPTION;
e_no_rows EXCEPTION;
-- 下个语句的作用是把错误号和异常之间建立关联
PRAGMA EXCEPTION_INIT(e_integrity,-2291);
v_name emp.ename%TYPE:='&name';
v_dno emp.deptno%TYPE:=&dno;
BEGIN
UPDATE emp SET depno=dno WHERE LOWER(ename)=v_name;
IF SQL%NOTFOUND THEN
RAISE e_no_rows;--显示的触发异常
END IF;
EXCEPTION
WHEN e_integrity THEN
dbms_output.put_line('该部门不存在');
WHEN e_no_rows THEN
dbms_output.put_line('该雇员不存在');
END;
2.--内置过程RAISE_APPLICATION_error用于自定义错误消息,并且消息号必须在-20000~-20999之间
。通过自定义错误消息,可以实现各种商业规则,并为最终用户提供更直观的错误提示信息。
CREATE OR REPLACE FUNCTION get_sal(v_NAME VARCHAR2) RETURN NUMBER
AS
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM emp WHERE upper(ename)=upper(v_NAME);
RETURN v_sal;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20000,'该雇员不存在');
END;
/
SELECT get_sal('mary') FROM daul;