13. 54. AVOID USE OF EXCEPTION_INIT
PRAGMA FOR A -20,NNN ERROR
14. BAD
CREATE OR REPLACE PROCEDURE
check_hiredate (date_in IN DATE)
IS
BEGIN
IF date_in < ADD_MONTHS (SYSDATE, -1 * 12 * 18)
THEN
RAISE_APPLICATION_ERROR ( -20734,
'Employee must be 18 years old.');
END IF;
END check_hiredate;
15. GOOD
CREATE OR REPLACE PROCEDURE
check_hiredate (date_in IN DATE)
IS
BEGIN
IF emp_rules.emp_too_young (date_in)
THEN
err.raise (errnums.emp_too_young);
END IF;
END check_hiredate;
16. 55. AVOID USE OF THE
RAISE_APPLICATION_ERROR BUILT-IN
PROCEDURE WITH A HARD-CODED -
20,NNN ERROR NUMBER OR HARD-CODED
MESSAGE.
20. BAD
CREATE OR REPLACE PACKAGE BODY department_api IS
FUNCTION name_by_id (in_id IN
departments.department_id%TYPE)
RETURN departments.department_name%TYPE IS
l_department_name departments.department_name%TYPE;
BEGIN
SELECT department_name
INTO l_department_name
FROM departments
WHERE department_id = in_id;
RETURN l_department_name;
END name_by_id;
END department_api;
21. GOOD
CREATE OR REPLACE PACKAGE BODY department_api IS
FUNCTION name_by_id (in_id IN departments.department_id%TYPE)
RETURN departments.department_name%TYPE IS
l_department_name departments.department_name%TYPE;
BEGIN
SELECT department_name
INTO l_department_name
FROM departments
WHERE department_id = in_id;
RETURN l_department_name;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
WHEN TOO_MANY_ROWS
THEN
RAISE;
END name_by_id;
END department_api;