Handling Exception
Handling Exception
Slide 4 :
Example of an Exception SET SERVEROUTPUT ON DECLARE lname VARCHAR2(15); BEGIN SELECT last_name INTO lname FROM employees WHERE first_name='John'; DBMS_OUTPUT.PUT_LINE ('John''s last name is : ' ||lname); EXCEPTION WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE (' Your select statement retrieved multiple rows. Consider using a cursor.'); END; Hasilnya :
Revisi : DECLARE lname VARCHAR2(15); BEGIN SELECT last_name INTO lname FROM employees WHERE first_name='John'; DBMS_OUTPUT.PUT_LINE ('John''s last name is : ' ||lname); EXCEPTION WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE (' Your select statement retrieved multiple rows. Consider using a cursor.'); END;
1
Hasilnya :
Slide 15 :
Non-Predefined Error SET SERVEROUTPUT ON DECLARE insert_excep EXCEPTION; PRAGMA EXCEPTION_INIT(insert_excep, -01400); BEGIN INSERT INTO departments(department_id, department_name) VALUES (280, NULL); EXCEPTION WHEN insert_excep THEN DBMS_OUTPUT.PUT_LINE('INSERT OPERATION FAILED'); DBMS_OUTPUT.PUT_LINE(SQLERRM); END; Hasilnya :
Revisi : DECLARE insert_excep EXCEPTION; PRAGMA EXCEPTION_INIT(insert_excep, -01400); BEGIN INSERT INTO departments(department_id, department_name) VALUES (280, NULL); EXCEPTION WHEN insert_excep THEN DBMS_OUTPUT.PUT_LINE('INSERT OPERATION FAILED'); DBMS_OUTPUT.PUT_LINE(SQLERRM); END; Hasilnya :
Slide 17 :
Functions for Trapping Exceptions DECLARE error_code NUMBER; error_message VARCHAR2(255); BEGIN ... EXCEPTION ... WHEN OTHERS THEN ROLLBACK; error_code := SQLCODE ; error_message := SQLERRM ; INSERT INTO errors (e_user, e_date, error_code, error_message) VALUES(USER,SYSDATE,error_code, error_message); END;
Kartika Dwi Hapsari | 105060809111003
Revisi : DECLARE kode_error NUMBER; pesan_error VARCHAR2(255); nama VARCHAR2(10); gaji NUMBER := 17000; BEGIN SELECT first_name INTO nama FROM employees WHERE salary=gaji; DBMS_OUTPUT.PUT_LINE ('Gaji : ' ||gaji); DBMS_OUTPUT.PUT_LINE ('Nama : ' ||nama); EXCEPTION WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE ('Jumlah row dari filter lebih dari satu'); kode_error := SQLCODE ; pesan_error := SUBSTR(SQLERRM, 1, 255); DBMS_OUTPUT.PUT_LINE('error code : ' ||kode_error); DBMS_OUTPUT.PUT_LINE('error message : ' ||pesan_error); END; Hasilnya :
Slide 24 :
Executable section BEGIN ... DELETE FROM employees WHERE manager_id = v_mgr; IF SQL%NOTFOUND THEN RAISE_APPLICATION_ERROR(-20202, 'This is not a valid manager'); END IF; ... Revisi : DECLARE v_mgr NUMBER :=1001; BEGIN DELETE FROM employees WHERE manager_id = v_mgr; IF SQL%NOTFOUND THEN RAISE_APPLICATION_ERROR(-20202,'This is not a valid manager'); END IF; END; Hasilnya :
Slide 24 :
Exception section ... EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR (-20201, 'Manager is not a valid employee.'); END; Revisi : DECLARE mgr_name VARCHAR2(10); mgr_id NUMBER:=1001; BEGIN SELECT first_name INTO mgr_name FROM employees WHERE manager_id=mgr_id; DBMS_OUTPUT.PUT_LINE('Steven is an employee of ' || mgr_name); EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR (-20201,'Manager is not a valid employee.'); END; Hasilnya :