Sei sulla pagina 1di 4

Tables:

------select * from bb_emp_sv;


select * from bb_dept_sv;
/* Function to get employee details for the given employee id */
Function:
--------CREATE OR REPLACE FUNCTION EMP_DETAILS_SV (EID IN NUMBER)
RETURN NUMBER
IS
ENO
NUMBER := EID;
EMP_REC EMP%ROWTYPE;
BEGIN
SELECT
INTO
FROM
WHERE

EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
EMP_REC
BB_EMP_SV
EMPNO = ENO;

IF SQL%FOUND
THEN
DBMS_OUTPUT.PUT_LINE('Employee Details for the Given Employee ID : '
|| EMP_REC.EMPNO
|| ' are as below ');
DBMS_OUTPUT.PUT_LINE ('Name
: ' || EMP_REC.ENAME);
DBMS_OUTPUT.PUT_LINE ('Job
: ' || EMP_REC.JOB);
DBMS_OUTPUT.PUT_LINE ('Manager ID : ' || EMP_REC.MGR);
DBMS_OUTPUT.PUT_LINE ('Hire Date : ' || EMP_REC.HIREDATE);
DBMS_OUTPUT.PUT_LINE ('Salary
: ' || EMP_REC.SAL);
DBMS_OUTPUT.PUT_LINE ('Commission : ' || EMP_REC.COMM);
DBMS_OUTPUT.PUT_LINE ('Department : ' || EMP_REC.DEPTNO);
RETURN 1;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE ('No Record with the Given EMP NO: ' || ENO);
RETURN 0;
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Error Occured while Fetching the details : ' || SQL
ERRM);
RETURN 0;
END;
Execution Of Function:
---------------------1. SELECT EMP_DETAILS_SV(7654) from dual;
2. DECLARE
NO NUMBER;
BEGIN
NO := EMP_DETAILS_SV(7654);
END;

3. BEGIN
DBMS_OUTPUT.PUT_LINE (EMP_DETAILS_SV(1255));
END;
Alternative Code:
----------------CREATE OR REPLACE FUNCTION EMP_DETAILS_SAT (EID IN NUMBER, EMP_REC OUT EMP%ROWTY
PE)
RETURN EMP%ROWTYPE
IS
BEGIN
SELECT * INTO EMP_REC FROM EMP WHERE EMPNO = EID;
RETURN EMP_REC;
END;
DECLARE
EMP_DETAILS EMP%ROWTYPE;
BEGIN
EMP_DETAILS := EMP_DETAILS_SAT(7654,EMP_DETAILS);
DBMS_OUTPUT.PUT_LINE('Employee Details for the Given Employee ID : '
|| EMP_DETAILS.EMPNO
|| ' are as below ');
DBMS_OUTPUT.PUT_LINE ('Name
: ' || EMP_DETAILS.ENAME);
DBMS_OUTPUT.PUT_LINE ('Job
: ' || EMP_DETAILS.JOB);
DBMS_OUTPUT.PUT_LINE ('Manager ID : ' || EMP_DETAILS.MGR);
DBMS_OUTPUT.PUT_LINE ('Hire Date : ' || EMP_DETAILS.HIREDATE);
DBMS_OUTPUT.PUT_LINE ('Salary
: ' || EMP_DETAILS.SAL);
DBMS_OUTPUT.PUT_LINE ('Commission : ' || EMP_DETAILS.COMM);
DBMS_OUTPUT.PUT_LINE ('Department : ' || EMP_DETAILS.DEPTNO);
END;
********************************************************************************
*******************************************************************************
/* Procedure to update salary details for the given job catageory*/
Procedure:
---------CREATE OR REPLACE PROCEDURE SAL_UPDATE_SV (JOB_CATAGEORY IN VARCHAR2)
IS
PERCENTAGE_HIKE NUMBER;
ROW_COUNT
NUMBER;
BEGIN
PERCENTAGE_HIKE := CASE UPPER (JOB_CATAGEORY)
WHEN 'CLERK' THEN 1000
WHEN 'SALESMAN' THEN 200
0
WHEN 'PRESIDENT' THEN 30
00
WHEN 'MANAGER' THEN 5000
WHEN 'ANALYST' THEN 7000
END;
DBMS_OUTPUT.PUT_LINE( 'Given Job Catageory is ' || JOB_CATAGEORY || ' then
the Hike AMount is: ' || PERCENTAGE_HIKE);
UPDATE

BB_EMP_SV

SET
WHERE

SAL = SAL + PERCENTAGE_HIKE


JOB = UPPER (JOB_CATAGEORY);

IF SQL%FOUND
THEN
ROW_COUNT := SQL%ROWCOUNT;
END IF;
DBMS_OUTPUT.PUT_LINE ('No Of Rows Updated : ' || ROW_COUNT);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Exception in Procedure : ' || SQLERRM);
END;
Calling Procedure:
-----------------BEGIN
SAL_UPDATE_SV('CLERK');
END;
********************************************************************************
*******************************************************************************
Trigers:
-------Before Insert Trigger:
---------------------CREATE OR REPLACE PROCEDURE EMP_INSERT_BEFORE_TIGGER
IS
PERSON_COUNT NUMBER;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT COUNT(*) INTO PERSON_COUNT FROM BB_EMP_SV;
IF PERSON_COUNT = 0
THEN
DBMS_OUTPUT.PUT_LINE ('Congrajulation!You are Going to Insert First Record
');
ELSE
DBMS_OUTPUT.PUT_LINE ('New Record added to the Existing Records');
DBMS_OUTPUT.PUT_LINE ('No Of Records Before Insertion: '||PERSON_COUNT);
END IF;
END EMP_INSERT_BEFORE_TIGGER;
----CREATE OR REPLACE TRIGGER EMP_INSERT_BEFORE
BEFORE INSERT
ON BB_EMP_SV
FOR EACH ROW
BEGIN
EMP_INSERT_BEFORE_TIGGER;
DBMS_OUTPUT.PUT_LINE ('** Before Insert Trigger **');

END;
----After Insert Trigger:
--------------------CREATE OR REPLACE TRIGGER EMP_INSERT_AFTER
AFTER INSERT
ON BB_EMP_SV
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE ('** After Insert Trigger **');
DBMS_OUTPUT.PUT_LINE ('New Record Inserted to the Employee: ' ||:NEW.ENAME)
;
END;
Insert Script:
-------------INSERT INTO BB_EMP_SV SELECT * FROM EMP WHERE EMP WHERE EMPNO = 7788;
After Update Trigger:
--------------------CREATE OR REPLACE TRIGGER SALARY_CHANGES
AFTER UPDATE ON BB_EMP_SV
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE ('salary updated to the Employee: ' ||:OLD.ENAME);
DBMS_OUTPUT.PUT_LINE('Old salary: ' || :OLD.SAL);
DBMS_OUTPUT.PUT_LINE('New salary: ' || :NEW.SAL);
END;
Update Script:
-------------UPDATE BB_EMP_SV SET SAL = 10000 WHERE EMPNO = 7788;

Potrebbero piacerti anche