0% found this document useful (0 votes)
39 views5 pages

Employee Management Package Functions

The document defines several PL/SQL packages including MY_PKG, MY_OVER_LOAD, and GLOBAL_PKG, which contain functions and procedures for retrieving employee and department data, manipulating salaries, and managing global variables. It also includes a view EMPS_VW that filters employees based on department and employee IDs from the global package. Additionally, a procedure SET_REF_CURSOR is provided to open a cursor for dynamic SQL queries on specified tables.

Uploaded by

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

Employee Management Package Functions

The document defines several PL/SQL packages including MY_PKG, MY_OVER_LOAD, and GLOBAL_PKG, which contain functions and procedures for retrieving employee and department data, manipulating salaries, and managing global variables. It also includes a view EMPS_VW that filters employees based on department and employee IDs from the global package. Additionally, a procedure SET_REF_CURSOR is provided to open a cursor for dynamic SQL queries on specified tables.

Uploaded by

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

-- SPECS

CREATE OR REPLACE PACKAGE MY_PKG


IS
FUNCTION GET_DEPT_NAME (P_EMP_ID NUMBER) RETURN VARCHAR2 ;
FUNCTION GET_JOB_TITLE (P_EMP_ID NUMBER) RETURN VARCHAR2 ;
PROCEDURE ADD_SALARY (P_EMP_ID NUMBER , P_AMOUNT NUMBER ) ;
END MY_PKG ;

-------------------------

-- BODY
CREATE OR REPLACE PACKAGE BODY MY_PKG
IS
FUNCTION GET_DEPT_NAME (P_EMP_ID NUMBER)
RETURN VARCHAR2
IS
V_DEPT_NAME VARCHAR2(200);
BEGIN
SELECT DEPARTMENT_NAME
INTO V_DEPT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
AND E.EMPLOYEE_ID = P_EMP_ID ;

RETURN V_DEPT_NAME ;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN NULL;
END GET_DEPT_NAME;

FUNCTION GET_JOB_TITLE (P_EMP_ID NUMBER)


RETURN VARCHAR2
IS
V_JOB_TITLE VARCHAR2(200);
BEGIN
SELECT JOB_TITLE
INTO V_JOB_TITLE
FROM EMPLOYEES E, JOBS D
WHERE E.JOB_ID = D.JOB_ID
AND E.EMPLOYEE_ID = P_EMP_ID ;

RETURN V_JOB_TITLE ;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN NULL;
END GET_JOB_TITLE ;

PROCEDURE ADD_SALARY (P_EMP_ID NUMBER , P_AMOUNT NUMBER )


IS
BEGIN
UPDATE EMPLOYEES
SET SALARY = SALARY + P_AMOUNT
WHERE EMPLOYEE_ID = P_EMP_ID ;
END ADD_SALARY ;

END MY_PKG ;

---------------------------####################

-- SPECS
CREATE OR REPLACE PACKAGE MY_OVER_LOAD
IS
FUNCTION GET_EMP_DATA (P_EMP_ID NUMBER ) RETURN VARCHAR2 ;
FUNCTION GET_EMP_DATA (P_JOB_ID VARCHAR2 ) RETURN VARCHAR2 ;
FUNCTION GET_EMP_DATA (P_EMP_ID NUMBER , P_DEPT_ID NUMBER ) RETURN VARCHAR2 ;
FUNCTION GET_EMP_DATA (P_EMP_ID NUMBER , P_JOB_ID VARCHAR2 ) RETURN VARCHAR2 ;
PROCEDURE GET_EMP_DATA (P_EMP_ID NUMBER , P_JOB_ID VARCHAR2 ) ;
END MY_OVER_LOAD ;

----------------------------------------

-- BODY
CREATE OR REPLACE PACKAGE BODY MY_OVER_LOAD
IS
FUNCTION GET_EMP_DATA (P_EMP_ID NUMBER ) RETURN VARCHAR2
IS
V_LAST_NAME VARCHAR2(100);
BEGIN
SELECT LAST_NAME
INTO V_LAST_NAME
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_EMP_ID ;

RETURN V_LAST_NAME ;
END GET_EMP_DATA;
FUNCTION GET_EMP_DATA (P_JOB_ID VARCHAR2 ) RETURN VARCHAR2
IS
V_JOB VARCHAR2(100);
BEGIN
SELECT JOB_TITLE
INTO V_JOB
FROM JOBS
WHERE JOB_ID = P_JOB_ID ;

RETURN V_JOB ;
END GET_EMP_DATA;
FUNCTION GET_EMP_DATA(P_EMP_ID NUMBER , P_DEPT_ID NUMBER ) RETURN VARCHAR2
IS
V_NAME VARCHAR2(100);
BEGIN
SELECT DEPARTMENT_NAME
INTO V_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
AND E.EMPLOYEE_ID = P_EMP_ID
-- AND ( E.DEPARTMENT_ID = P_DEPT_ID OR :P_D_ID IS NULL )
AND E.DEPARTMENT_ID = NVL(P_DEPT_ID , E.DEPARTMENT_ID ) ;

RETURN V_NAME ;
END GET_EMP_DATA;
FUNCTION GET_EMP_DATA (P_EMP_ID NUMBER , P_JOB_ID VARCHAR2 ) RETURN VARCHAR2
IS
V_NAME VARCHAR2(100);
BEGIN
SELECT JOB_TITLE
INTO V_NAME
FROM EMPLOYEES E, JOBS D
WHERE E.JOB_ID = D.JOB_ID
AND E.EMPLOYEE_ID = P_EMP_ID
-- AND ( E.DEPARTMENT_ID = P_DEPT_ID OR :P_D_ID IS NULL )
AND E.JOB_ID = NVL(P_JOB_ID , E.JOB_ID ) ;

RETURN V_NAME ;
END GET_EMP_DATA ;
PROCEDURE GET_EMP_DATA (P_EMP_ID NUMBER , P_JOB_ID VARCHAR2 )
IS

BEGIN
DBMS_OUTPUT.PUT_LINE (P_EMP_ID||P_JOB_ID );
END GET_EMP_DATA ;
END MY_OVER_LOAD ;

----------------------

CREATE OR REPLACE PACKAGE GLOBAL_PKG


IS
V_DEPT_ID NUMBER ;
V_EMP_ID NUMBER ;
FUNCTION GET_V_DEPT_ID RETURN NUMBER ;
PROCEDURE SET_V_DEPT_ID (P_DEPT_ID NUMBER) ;

FUNCTION GET_V_EMP_ID RETURN NUMBER ;


PROCEDURE SET_V_EMP_ID (P_EMPiD NUMBER) ;
END ;

------------

CREATE OR REPLACE PACKAGE BODY GLOBAL_PKG


IS
FUNCTION GET_V_DEPT_ID RETURN NUMBER
IS
BEGIN
RETURN V_DEPT_ID ;
END GET_V_DEPT_ID;
PROCEDURE SET_V_DEPT_ID (P_DEPT_ID NUMBER)
IS
BEGIN
V_DEPT_ID := P_DEPT_ID ;
END SET_V_DEPT_ID;

FUNCTION GET_V_EMP_ID RETURN NUMBER


IS
BEGIN
RETURN V_EMP_ID ;
END GET_V_EMP_ID;
PROCEDURE SET_V_EMP_ID (P_EMPiD NUMBER)
IS
BEGIN
V_EMP_ID := P_EMPiD ;
END SET_V_EMP_ID;
END GLOBAL_PKG ;

---------------

CREATE OR REPLACE VIEW EMPS_VW


AS
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID = NVL( GLOBAL_PKG.GET_V_DEPT_ID , DEPARTMENT_ID )
AND EMPLOYEE_ID = NVL( GLOBAL_PKG.GET_V_EMP_ID , EMPLOYEE_ID )

-----------

SELECT *
FROM EMPS_VW

SELECT GLOBAL_PKG.GET_V_DEPT_ID
FROM DUAL

BEGIN GLOBAL_PKG.SET_V_DEPT_ID (100) ;


GLOBAL_PKG.SET_V_EMP_ID (110) ;
END ;

------------------------

CREATE OR REPLACE PROCEDURE SET_REF_CURSOR (P_TABLE_NAME VARCHAR2 )


IS
TYPE T_REF IS REF CURSOR ;

V_REF T_REF ;

V_DATA EMPLOYEES%ROWTYPE ;
V_STAT VARCHAR2(32000) := 'SELECT * FROM '||P_TABLE_NAME ;
-- V_FILE UTL_FILE.FILE_TYPE ;
BEGIN
-- V_FILE := UTL_FILE.FOPEN ( 'MY_DIR' , P_TABLE_NAME||'.CSV' , 'W') ;
OPEN V_REF FOR V_STAT ;
LOOP
FETCH V_REF INTO V_DATA ;
EXIT WHEN V_REF%NOTFOUND ;
-- UTL_FILE.PUT_LINE (V_FILE , V_DATA ) ;
END LOOP;
CLOSE V_REF ;
-- UTL_FILE.FCLOSE (V_FILE);
END ;

------------------------------
------ TASK
PACKAGE MY_PKG
FUNCTION GET_NAME ( P_ID NUMBER , P_E_D VARCHAR2 )
IF P_E_D = E THEN
P_ID = EMPLOYEE_ID
RETURN FULL_NAME
ELSIF P_E_D = D THEN
P_ID = DEPARTMENT_ID
RETURN DEPARTMENT_NAME
--------
GET_FORMAT_PHONE_NUMBER (P_PHONE_NUMBER VARCHAR2)
IF P_PHONE_NUMBER = LENGTH <> 11 THEN
ERROR 'Invalid Phone Number'
ELSE
P_PHONE_NUMBER := '01144858147'
return 011-448-52147
----------
GET_FULL_ADDRESS ( P_ID NUMBER , P_E_D VARCHAR2 )
IF P_E_D = E THEN
P_ID = EMPLOYEE_ID
RETURN ADDRESS (CITY || STEET_ADDRESS)
ELSIF P_E_D = D THEN
P_ID = DEPARTMENT_ID
RETURN ADDRESS (CITY || STEET_ADDRESS)

You might also like