There are three ways that an exception may be raised in your application:
The database might raise the exception when it detects an error.
You might raise an exception with the RAISE statement.
You might raise an exception with the RAISE_APPLICATION_ERROR built-in procedure.
I’ve already looked at how the database raises exceptions. Now let’s examine the different mechanisms you can use to raise exceptions.
Oracle offers the RAISE statement so that you can, at your discretion, raise a named exception. You can raise an exception of your own or a system exception. The RAISE statement can take one of three forms:
The first form (without a package name qualifier) can be used to raise an exception you have defined in the current block (or an outer block containing that block) or to raise a system exception defined in the STANDARD package. Here are two examples, first raising a programmer-defined exception:
DECLARE invalid_id EXCEPTION; -- All IDs must start with the letter 'X'. id_value VARCHAR2(30); BEGIN id_value := id_for ('SMITH'); IF SUBSTR (id_value, 1, 1) != 'X' THEN RAISE invalid_id; END IF; ... END;
And then you can always raise a system exception as needed:
BEGIN IF total_sales = 0 THEN RAISE ZERO_DIVIDE; -- Defined in STANDARD package ELSE RETURN (sales_percentage_calculation (my_sales, total_sales)); END IF; END;
The second form does require a package name qualifier. If an exception ...