0% found this document useful (0 votes)
27 views9 pages

Assignment 10

Uploaded by

sai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views9 pages

Assignment 10

Uploaded by

sai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

ASSIGNMENT 10

TASK1
CODE1 a: Create the package specification including the
procedures and function headings as public constructs.
CREATE OR REPLACE PACKAGE job_pkg AS

PROCEDURE add_job(p_job_id IN VARCHAR2, p_job_title IN VARCHAR2);

PROCEDURE upd_job(p_job_id IN VARCHAR2, p_job_title IN VARCHAR2);

PROCEDURE del_job(p_job_id IN VARCHAR2);

FUNCTION get_job(p_job_id IN VARCHAR2) RETURN VARCHAR2;

END job_pkg;

OUTPUT:

CODE1 b: Create the package body with the


implementations for each of the subprograms.
CREATE OR REPLACE PACKAGE BODY job_pkg AS

PROCEDURE add_job(p_job_id IN VARCHAR2, p_job_title IN VARCHAR2) IS

BEGIN

INSERT INTO jobs (job_id, job_title) VALUES (p_job_id, p_job_title);

COMMIT;

EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN

DBMS_OUTPUT.PUT_LINE('Job ID already exists.');

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);

END add_job;

PROCEDURE upd_job(p_job_id IN VARCHAR2, p_job_title IN VARCHAR2) IS

BEGIN

UPDATE jobs

SET job_title = p_job_title

WHERE job_id = p_job_id;

IF SQL%ROWCOUNT = 0 THEN

DBMS_OUTPUT.PUT_LINE('No job found with the given ID.');

ELSE

COMMIT;

END IF;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);

END upd_job;

PROCEDURE del_job(p_job_id IN VARCHAR2) IS

BEGIN

DELETE FROM jobs

WHERE job_id = p_job_id;

IF SQL%ROWCOUNT = 0 THEN
DBMS_OUTPUT.PUT_LINE('No job found with the given ID.');

ELSE

COMMIT;

END IF;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);

END del_job;

FUNCTION get_job(p_job_id IN VARCHAR2) RETURN VARCHAR2 IS

v_job_title VARCHAR2(255);

BEGIN

SELECT job_title

INTO v_job_title

FROM jobs

WHERE job_id = p_job_id;

RETURN v_job_title;

EXCEPTION

WHEN NO_DATA_FOUND THEN

RETURN 'No job found with the given ID.';

WHEN OTHERS THEN

RETURN 'An error occurred: ' || SQLERRM;

END get_job;

END job_pkg;

/
OUTPUT:
CODE 1C:
Delete the following stand-alone procedures and function you
just packaged using the Procedures and Functions nodes in the
Object Navigation tree:
1) The ADD_JOB, UPD_JOB, and DEL_JOB procedures
2) The GET_JOB function
CODE:
DROP PROCEDURE add_job;

DROP PROCEDURE upd_job;

DROP PROCEDURE del_job;

DROP FUNCTION get_job;

CODE 1D:
Delete the following stand-alone procedures and function you
just packaged using the Procedures and Functions nodes in the
Object Navigation tree:
BEGIN

job_pkg.add_job(p_job_id => 'IT_SYSAN', p_job_title => 'SYSTEMS ANALYST');

END;

e. Query the JOBS table to see the result.


SELECT * FROM jobs WHERE job_id = 'IT_SYSAN';
TASK 2:
a. Create a package specification and a package body
called EMP_PKG that contains the following procedures
and function that you created earlier:
1) ADD EMPLOYEE procedure as a public construct 2) GET
EMPLOYEE procedure as a public construct
3) VALID DEPTID function as a private construct
CODE:
CREATE OR REPLACE PACKAGE EMP_PKG AS

-- Public procedures

PROCEDURE ADD_EMPLOYEE(p_dept_id IN NUMBER, p_emp_name IN VARCHAR2,


p_email IN VARCHAR2);

PROCEDURE GET_EMPLOYEE(p_emp_id IN NUMBER);

-- Private function

FUNCTION VALID_DEPTID(p_dept_id IN NUMBER) RETURN BOOLEAN;

END EMP_PKG;

CREATE OR REPLACE PACKAGE BODY EMP_PKG AS


-- Public procedure to add an employee

PROCEDURE ADD_EMPLOYEE(p_dept_id IN NUMBER, p_emp_name IN VARCHAR2,


p_email IN VARCHAR2) IS

BEGIN

IF NOT VALID_DEPTID(p_dept_id) THEN

RAISE_APPLICATION_ERROR(-20001, 'Invalid Department ID: ' || p_dept_id);

END IF;

INSERT INTO EMPLOYEES (EMP_NAME, EMAIL, DEPT_ID)

VALUES (p_emp_name, p_email, p_dept_id);

COMMIT;

EXCEPTION

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-20002, 'Error adding employee: ' || SQLERRM);

END ADD_EMPLOYEE;

-- Public procedure to get employee details

PROCEDURE GET_EMPLOYEE(p_emp_id IN NUMBER) IS

v_emp_name EMPLOYEES.EMP_NAME%TYPE;

v_email EMPLOYEES.EMAIL%TYPE;

v_dept_id EMPLOYEES.DEPT_ID%TYPE;

BEGIN

SELECT EMP_NAME, EMAIL, DEPT_ID

INTO v_emp_name, v_email, v_dept_id

FROM EMPLOYEES
WHERE EMP_ID = p_emp_id;

DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_emp_name);

DBMS_OUTPUT.PUT_LINE('Email: ' || v_email);

DBMS_OUTPUT.PUT_LINE('Department ID: ' || v_dept_id);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('No employee found with ID: ' || p_emp_id);

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error retrieving employee: ' || SQLERRM);

END GET_EMPLOYEE;

-- Private function to validate department ID

FUNCTION VALID_DEPTID(p_dept_id IN NUMBER) RETURN BOOLEAN IS

v_count NUMBER;

BEGIN

SELECT COUNT(*)

INTO v_count

FROM DEPARTMENTS

WHERE DEPT_ID = p_dept_id;

RETURN v_count > 0;

END VALID_DEPTID;

END EMP_PKG;

/
b. Invoke the EMP_PKG.ADD EMPLOYEE procedure, using
department ID 15 for employee Jane Harris with the email
ID JAHARRIS. Because department ID 15 does not exist,
you should get an error message as specified in the
exception handler of your procedure.
BEGIN

EMP_PKG.ADD_EMPLOYEE(p_dept_id => 15, p_emp_name => 'Jane Harris', p_email =>


'JAHARRIS');

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;

c. Invoke the ADD_EMPLOYEE package procedure by using


department ID 80 for employee David Smith with the email ID
DASMITH.
CODE:

BEGIN

EMP_PKG.ADD_EMPLOYEE(p_dept_id => 80, p_emp_name => 'David Smith', p_email =>


'DASMITH');

DBMS_OUTPUT.PUT_LINE('Employee added successfully.');

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;
/

d. Query the EMPLOYEES table to verify that the new employee


was added.
CODE:
SELECT * FROM EMPLOYEES WHERE EMP_NAME = 'David Smith';

You might also like