Exception Handling in PL/SQL
Exception Handling in PL/SQL
1) SYSTEM/PRE-DEFINED EXCEPTION
2) USER DEFINED EXCEPTION
SYNTAX:
DECLARE
BEGIN
<STATEMENTS………….>;
EXCEPTION
<ERROR STATEMENTS…….>;
END;
1) SYSTEM/PRE-DEFINED EXCEPTION:
THESE ARE DEFINED BY ORACLE BY DEFAULT. WHENEVER
RUNTIME ERROR IS OCCURRED IN PL/SQL THEN WE USE AN
APPROPRIATE PRE-DEFINED EXCEPTION IN THE PROGRAM.
EX:
BEGIN
DBMS_OUTPUT.PUT_LINE(TENAME||','||TSAL);
EXCEPTION
END;
EX:
BEGIN
DBMS_OUTPUT.PUT_LINE(TSAL);
EXCEPTION
END;
EX:
BEGIN
X: =&X;
Y: =&Y;
Z: =X/Y;
EXCEPTION
END;
/
INVALID CURSOR: WHEN WE ARE NOT OPENING THE CURSOR BUT
WE ARE TRY TO PERFORM OPERATIONS ON CURSOR THEN ORACLE
RETURNS AN ERROR.
EX:
DECLARE
BEGIN
CLOSE C1;
EXCEPTION
END;
DECLARE
BEGIN
OPEN C1;
LOOP
END LOOP;
OPEN C1;
EXCEPTION
END;
EX:
DECLARE
X NUMBER (10);
Y NUMBER (20);
Z NUMBER (10);
BEGIN
X:=&X;
Y:=&Y;
Z:=X/Y;
DBMS_OUTPUT.PUT_LINE(Z);
EXCEPTION
DBMS_OUTPUT.PUT_LINE(SQLCODE);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
OUTPUT:
-1476---------ERROR CODE
SYNTAX:
EX:
EX EXCEPTION;
SYNTAX:
EX:
RAISE EX;
SYNTAX:
<STATEMENTS>;
END;
/
EX:
WHEN EX THEN
END;
EX:
DECLARE
X INT;
Y INT;
Z INT;
EX EXCEPTION; --------------(1)
BEGIN
X:=&X;
Y:=&Y;
IF Y=0 THEN
ELSE
Z:=X/Y;
DBMS_OUTPUT.PUT_LINE(Z);
END IF;
EXCEPTION
WHEN EX THEN-------------(3)
END;
/
RAISE_APPLICATION_ERROR (NUMBER, MESSAGE):
- IT IS A PRE-DEFINE METHOD WHICH IS USED TO DISPLAY A
USER DEFINE EXCEPTION INFORMATION IN FORM OF ORACLE
FORMAT.
HERE,
EX:
DECLARE
X INT;
Y INT;
Z INT;
EX EXCEPTION;
BEGIN
X:=&X;
Y:=&Y;
IF Y=0 THEN
RAISE EX;
ELSE
Z:=X/Y;
DBMS_OUTPUT.PUT_LINE(Z);
END IF;
EXCEPTION
WHEN EX THEN
END;
ERROR AT LINE 1:
ORA-06512: AT LINE 17
SYNTAX:
EX:
DECLARE
X EXCEPTION;
BEGIN
INSERT INTO EMP (EMPNO, ENAME, DEPTNO) VALUES
(1122,'SAI',50);
EXCEPTION
WHEN X THEN
END;
EXCEPTION PROPAGATION:
- EXCEPTION BLOCK HANDLES EXCEPTION WHICH WAS RAISED
IN BODY (EXECUTION BLOCK) BUT CANNOT HANDLE EXCEPTION
WHICH WILL RAISE IN DECLARATION BLOCK.
EX:
DECLARE
X VARCHAR2(3):='PQRS';
BEGIN
DBMS_OUTPUT.PUT_LINE(X);
EXCEPTION
END;
ERROR AT LINE 1:
SOL:
BEGIN
DECLARE
X VARCHAR2(3):='PQRS';
BEGIN
DBMS_OUTPUT.PUT_LINE(X);
EXCEPTION
END;
EXCEPTION
END;
OUTPUT:
NOTE: