显示用户定义例外情况的示例
=============================================
DECLARE
M NUMBER(4);
MYERROR EXCEPTION;
BEGIN
SELECT COMM INTO M FROM EMP WHERE EMPNO=7788;
IF M IS NULL THEN
RAISE MYERROR;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('ERROR OF DATA......!');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('ERROR OF TOOMANY ROWS.....!');
WHEN MYERROR THEN
DBMS_OUTPUT.PUT_LINE('ERROR FOUND NULL......!');
END;
USER DEFINED EXCEPTION ----用于显式引发异常。
必须在声明部分中声明,并在expeption块中进行处理。
显示用户定义例外情况的示例
=============================================
DECLARE
SALARY EMP.SAL%TYPE;
NAME EMP.ENAME%TYPE;
NO NUMBER:=&NO;
GREATER EXCEPTION; --User defined exception
LESSER EXCEPTION; --User defined exception
BEGIN
SELECT ENAME,SAL INTO NAME,SALARY FROM EMP WHERE EMPNO=NO;
IF SALARY>2000 THEN
RAISE GREATER; --User defined exception raised explicitely.
ELSE
RAISE LESSER; --User defined exception raised explicitely.
END IF;
EXCEPTION
WHEN GREATER THEN
RAISE_APPLICATION_ERROR(-20001,'YOUR SALARY IS MORE THAN 2000');
--User defined exception handled here.
WHEN LESSER THEN
RAISE_APPLICATION_ERROR(-20002,'YOUR SALARY IS LESS THAN 2000');
--User defined exception handled here.
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20003,'PLEASE ENTER A VALID EMPNO');
END;
注-可以在单个异常块中处理预定义和用户定义的异常。
用户定义的ORACLE定义的数字除外
==================================================
DECLARE
EXP1 EXCEPTION;
PRAGMA EXCEPTION_INIT(EXP1,-00001); --exp1 is initialized to error number 00001
BEGIN
INSERT INTO DEPT VALUES(&DNO,'&DNAME','&LOC');
DBMS_OUTPUT.PUT_LINE('ONE RECORD INSERTED');
EXCEPTION
WHEN EXP1 THEN
DBMS_OUTPUT.PUT_LINE('DUPLICATE VALUE');
--when the exception 00001 is raised instead of showing oracle defined message user defined message is displayed.
END;
编译指示是在编译时而不是在运行时处理的编译器指令。
杂注必须出现在同一声明部分中异常声明之后的某个位置。
还要检查
例外情况-4From: https://bytes.com/topic/oracle/insights/748326-exceptions-3-a
本文深入解析Oracle中的异常处理机制,包括预定义异常、用户自定义异常的声明与使用,以及如何通过异常处理来增强程序的健壮性和错误反馈。通过具体示例,展示了如何在PL/SQL中有效地捕获和响应不同类型的异常。
1021

被折叠的 条评论
为什么被折叠?



