Advertisement
Guest User

Lab 4 Script

a guest
Nov 16th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.98 KB | None | 0 0
  1. SET SERVEROUTPUT ON;
  2.  
  3. -- CREATE VIEW --
  4. CREATE OR REPLACE VIEW EMPLOYEE_RECORD AS
  5. SELECT
  6.     EMP.EMPLOYEE_ID,
  7.     EMP.FIRST_NAME || ' ' || EMP.LAST_NAME AS EMPLOYEE_NAME,
  8.     EMP.HIRE_DATE,
  9.     EMP.SALARY AS BASE_SALARY,
  10.     NVL(EMP.COMMISSION_PCT, 0) AS COMMISSION,
  11.     DEPT.DEPARTMENT_NAME,
  12.     LOC.STREET_ADDRESS,
  13.     LOC.CITY,
  14.     LOC.STATE_PROVINCE,
  15.     LOC.POSTAL_CODE,
  16.     NVL(MAN.FIRST_NAME, 'Manager') || ' ' || NVL(MAN.LAST_NAME, 'Not Found') AS MANAGER_NAME
  17. FROM EMPLOYEES EMP
  18. LEFT JOIN DEPARTMENTS DEPT
  19.     ON EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID
  20. LEFT JOIN EMPLOYEES MAN
  21.     ON EMP.MANAGER_ID = MAN.EMPLOYEE_ID
  22. LEFT JOIN LOCATIONS LOC
  23.     ON LOC.LOCATION_ID = DEPT.LOCATION_ID;
  24.  
  25. -- CREATE PACKAGE --
  26. CREATE OR REPLACE PACKAGE emp_package AS
  27.     PROCEDURE employeeInfo(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE);
  28.     PROCEDURE giveRaise(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE, raise_pct NUMBER);
  29.     PROCEDURE removeEmployee(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE);
  30.     PROCEDURE addEmployee(emp_id NUMBER, f_name VARCHAR2, l_name VARCHAR2, email VARCHAR2, phone VARCHAR2, hire DATE, job_id VARCHAR2, salary NUMBER, c_pct NUMBER, m_id NUMBER, d_id NUMBER);
  31. END emp_package;
  32. /
  33.  
  34. -- CREATE PACKAGE BODY --
  35. CREATE OR REPLACE PACKAGE BODY emp_package AS
  36.  
  37.     -- FIND EMPLOYEE PROCEDURE --
  38.     PROCEDURE employeeInfo(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE) IS
  39.    
  40.     employeeRecord EMPLOYEE_RECORD%ROWTYPE;
  41.    
  42.     BEGIN
  43.         SELECT * INTO employeeRecord
  44.         FROM EMPLOYEE_RECORD
  45.         WHERE EMPLOYEE_ID = emp_id;
  46.        
  47.     DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employeeRecord.EMPLOYEE_NAME);
  48.     DBMS_OUTPUT.PUT_LINE('Hire Date: ' || employeeRecord.HIRE_DATE);
  49.     DBMS_OUTPUT.PUT_LINE('Salary: ' || employeeRecord.BASE_SALARY);
  50.     DBMS_OUTPUT.PUT_LINE('Commission Percentage: ' || employeeRecord.COMMISSION);
  51.     DBMS_OUTPUT.PUT_LINE('Department Name: ' || employeeRecord.DEPARTMENT_NAME);
  52.     DBMS_OUTPUT.PUT_LINE('Street Address: ');
  53.     DBMS_OUTPUT.PUT_LINE(employeeRecord.STREET_ADDRESS);
  54.     DBMS_OUTPUT.PUT_LINE(employeeRecord.CITY || ', ' || employeeRecord.STATE_PROVINCE || ' ' || employeeRecord.POSTAL_CODE);
  55.     DBMS_OUTPUT.PUT_LINE('Manager Name: ' || employeeRecord.MANAGER_NAME);
  56.    
  57.     END employeeInfo;
  58.    
  59.     -- RAISE PROCEDURE --
  60.     PROCEDURE giveRaise(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE, raise_pct NUMBER) IS
  61.    
  62.     calculatedRaise NUMBER;
  63.    
  64.     BEGIN
  65.         SELECT SALARY INTO calculatedRaise
  66.         FROM EMPLOYEES
  67.         WHERE EMPLOYEE_ID = emp_id;
  68.        
  69.         DBMS_OUTPUT.PUT_LINE('Current Salary: ' || calculatedRaise);
  70.        
  71.         calculatedRaise := calculatedRaise + (calculatedRaise * raise_pct);
  72.        
  73.         DBMS_OUTPUT.PUT_LINE('New Salary: ' || calculatedRaise);
  74.        
  75.         UPDATE EMPLOYEES
  76.             SET SALARY = calculatedRaise
  77.         WHERE EMPLOYEE_ID = emp_id;
  78.        
  79.     END giveRaise;
  80.    
  81.     -- DELETE EMPLOYEE --
  82.     PROCEDURE removeEmployee(emp_id EMPLOYEES.EMPLOYEE_ID%TYPE) IS
  83.    
  84.     BEGIN
  85.         DELETE FROM EMPLOYEES
  86.         WHERE EMPLOYEE_ID = emp_id;
  87.        
  88.         DBMS_OUTPUT.PUT_LINE('Employee #' || emp_id || ' was Deleted Successfully!');
  89.        
  90.     END removeEmployee;
  91.    
  92.     -- ADD EMPLOYEE --
  93.     PROCEDURE addEmployee(emp_id NUMBER, f_name VARCHAR2, l_name VARCHAR2, email VARCHAR2, phone VARCHAR2, hire DATE, job_id VARCHAR2, salary NUMBER, c_pct NUMBER, m_id NUMBER, d_id NUMBER) IS
  94.    
  95.     BEGIN
  96.         INSERT INTO EMPLOYEES
  97.         VALUES (emp_id, f_name, l_name, email, phone, hire, job_id, salary, c_pct, m_id, d_id);
  98.        
  99.         DBMS_OUTPUT.PUT_LINE('Employee #' || f_name || ' ' || l_name || ' was Added Successfully!');
  100.        
  101.     END addEmployee;
  102. END emp_package;
  103. /
  104.  
  105. -- EXECUTE PACKAGES --
  106. EXEC emp_package.employeeInfo(&emp_id);
  107. EXEC emp_package.giveRaise(&emp_id, &raise_pct);
  108. EXEC emp_package.removeEmployee(&emp_id);
  109. EXEC emp_package.addEmployee(&emp_id, &f_name, &l_name, &email, &phone, &hire, &job_id, &salary, &c_pct, &m_id, &d_id);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement