The user defined exceptions are user declared exceptions in the declarative part of any PL/SQL anonymous block, subprogram or package.
In the first example exception was declared in the declarative part and then the exception is triggered inside the block using RAISE. The second example use RAISE_APPLICATION_ERROR inside the block with no need to declare exception in the declarative part.
STUDENT_ID | FIRST_NAME | LAST_NAME | GENDER |
---|---|---|---|
1 | Daniel | SCOTT | M |
2 | Anthony | SIMMONS | M |
3 | Sophia | THOMPSON | F |
Raise example
declare v_gender varchar2(10); message varchar2(250); my_exception exception; begin SELECT gender INTO v_gender from students WHERE student_id = 3; dbms_output.put_line('Gender is: '||v_gender); IF v_gender = 'M' THEN message := 'MALE'; ELSE RAISE my_exception; END IF; dbms_output.put_line('Message: '||message); exception when my_exception then dbms_output.put_line('My User defined exceptions!'); end;
Output:
Gender is: F
My User defined exceptions!
Raise_application_error example
declare v_gender varchar2(10); message varchar2(250); begin SELECT gender INTO v_gender from students WHERE student_id = 3; IF v_gender = 'M' THEN message := 'MALE'; ELSE raise_application_error(-20101, 'Gender is missing'); END IF; dbms_output.put_line('Message: '||message); end;
Output:
ORA-20101: Gender is missing
ORA-06512: at line 9