Lesson 8
Lesson 8
Error Handling
Topic Coved
2-25
3-25
What is an exception?
– Identifier in PL/SQL that is raised during
execution.
How is it raised?
– An Oracle error occurs.
– You raise it explicitly.
How do you handle it?
– Trap it with a handler.
– Propagate it to the calling environment.
4-25
)DECLARE( )DECLARE(
BEGIN BEGIN
Exception Exception
Is Raised Is Raised
EXCEPTION EXCEPTION
Exception Exception Is
Is Trapped ;END ;END Not Trapped
Exception
Propagates to
Calling Environment
5-25
6-25
7-25
PROCEDURE
PROCEDURE elim_inventory
elim_inventory
(v_product_id
(v_product_id IN
IN s_product.id%TYPE)
s_product.id%TYPE) IS
IS
v_id
v_id s_product.id%TYPE;
s_product.id%TYPE;
BEGIN
BEGIN
SELECT
SELECT id
id
INTO
INTO v_id
v_id
FROM
FROM s_product
s_product
WHERE
WHERE id
id == v_product_id;
v_product_id;
DELETE
DELETE FROM
FROM s_inventory
s_inventory
WHERE
WHERE product_id
product_id == v_product_id;
v_product_id;
COMMIT;
COMMIT;
...
...
8-25
...
...
EXCEPTION
EXCEPTION
WHEN
WHEN NO_DATA_FOUND
NO_DATA_FOUND THEN
THEN
ROLLBACK;
ROLLBACK;
TEXT_IO.PUT_LINE(TO_CHAR(v_product_id))||
TEXT_IO.PUT_LINE(TO_CHAR(v_product_id))||
’’ is
is invalid.’);
invalid.’);
WHEN
WHEN TOO_MANY_ROWS
TOO_MANY_ROWS THEN
THEN
ROLLBACK;
ROLLBACK;
TEXT_IO.PUT_LINE
TEXT_IO.PUT_LINE (’Data
(’Data corruption
corruption in
in S_PRODUCT.’);
S_PRODUCT.’);
WHEN
WHEN OTHERS
OTHERS THEN
THEN
ROLLBACK;
ROLLBACK;
TEXT_IO.PUT_LINE
TEXT_IO.PUT_LINE (’Other
(’Other error
error occurred.’);
occurred.’);
END
END elim_inventory;
elim_inventory;
9-25
10-25
12-25
14-25
15-25
16-25
19-25