0% found this document useful (0 votes)
7 views

New DOC Document

Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

New DOC Document

Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

-- Create the "employees" table

CREATE TABLE employee (


employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
email VARCHAR2(100),
salary NUMBER,
job_id VARCHAR2(50),
hire_date DATE,
department_id NUMBER,
da NUMBER;
hra NUMBER;
gross_salary NUMBER;
);
SELECT * FROM EMPLOYEE;
-- Create the "emp_mgmt" procedure for employee management
CREATE OR REPLACE PROCEDURE emp_mgmt(
p_emp_id IN NUMBER,
p_first_name IN VARCHAR2,
p_last_name IN VARCHAR2,
p_email IN VARCHAR2,
p_salary IN NUMBER,
p_job_id IN VARCHAR2,
p_hire_date IN DATE,
p_department_id IN NUMBER,
p_operation IN VARCHAR2) IS
BEGIN
IF p_operation = 'INSERT' THEN
INSERT INTO employee(employee_id, first_name, last_name, email, salary, job_id, hire_date,
department_id)
VALUES(p_emp_id, p_first_name, p_last_name, p_email, p_salary, p_job_id, p_hire_date,
p_department_id);
COMMIT;
ELSIF p_operation = 'UPDATE' THEN
UPDATE employee
SET first_name = p_first_name,
last_name = p_last_name,
email = p_email,
salary = p_salary,
job_id = p_job_id,
hire_date = p_hire_date,
department_id = p_department_id
WHERE employee_id = p_emp_id;
COMMIT;
ELSIF p_operation = 'DELETE' THEN
DELETE FROM employee WHERE employee_id = p_emp_id;
COMMIT;
END IF;
DBMS_OUTPUT.PUT_LINE('Employee management operation completed successfully');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END emp_mgmt;
/

-- Create the "manage_employee_salary" procedure for salary updates


CREATE OR REPLACE PROCEDURE manage_employee_salary(
p_emp_id IN NUMBER,
p_salary IN NUMBER) IS
BEGIN
UPDATE employee
SET salary = p_salary
WHERE employee_id = p_emp_id;
COMMIT;
DBMS_OUTPUT.PUT_LINE('Employee salary updated successfully');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee not found.');
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END manage_employee_salary;
/

BEGIN
emp_mgmt(1001, 'John', 'Doe', '[email protected]', 60000, 'JOB001', TO_DATE('2023-10-31',
'YYYY-MM-DD'), 101, 'INSERT');
END;
/
BEGIN
emp_mgmt(1004, 'Maya', 'Chakravarthi', '[email protected]', 70000, 'JOB004',
TO_DATE('2010-10-12', 'YYYY-MM-DD'), 102, 'INSERT');
END;
/

select * from employee;


BEGIN
manage_employee_salary(1001, 65000);
END;
/

CREATE OR REPLACE PROCEDURE UPDATE_SALARY(M_EMPID IN INT) IS


DA_PERCENT NUMBER(10,2) := 0.05;
HRA_PERCENT NUMBER(10,2) := 0.10;
NEW_DA NUMBER(12,2);
NEW_HRA NUMBER(12,2);
NEW_GROSS_SAL NUMBER(12,2);
BEGIN
-- Retrieve the current salary of the employee
SELECT SALARY INTO NEW_GROSS_SAL FROM EMPLOYEE WHERE EMPLOYEE_ID = M_EMPID;

-- Calculate new DA and HRA


NEW_DA := NEW_GROSS_SAL * DA_PERCENT;
NEW_HRA := NEW_GROSS_SAL * HRA_PERCENT;

-- Calculate the new gross salary


NEW_GROSS_SAL := NEW_GROSS_SAL + NEW_DA + NEW_HRA;

-- Update the table with new values


UPDATE EMPLOYEE
SET DA = NEW_DA,
HRA = NEW_HRA,
GROSS_SALARY = NEW_GROSS_SAL
WHERE EMPLOYEE_ID = M_EMPID;

DBMS_OUTPUT.PUT_LINE('Updated salary for EMP_ID ' || M_EMPID);


EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee not found.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END UPDATE_SALARY;
/
BEGIN
UPDATE_SALARY(1001);
END;
/

You might also like