PJF16

Increase Salary

Apr 19th, 2015
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.15 KB | None | 0 0
  1. /*
  2. Ermittle das kleinste Durchschnittsgehalt der Abteilung. Führe danach bei jedem Mitarbeiter eine Erhöhung um 3% aus der unter dem Durchschnittsgehalt liegt
  3. */
  4. SET serveroutput ON;
  5. DECLARE
  6. dgehalt emp.sal%TYPE;
  7. TYPE dept_type_record IS record (
  8. deptno dept.deptno%TYPE,
  9. deptsal emp.sal%TYPE := 0);
  10. TYPE dept_type IS TABLE OF dept_type_record;
  11. TYPE emp_type IS TABLE OF emp%rowtype;
  12. anz_dept INTEGER;
  13. anz_emp INTEGER;
  14. dept_t dept_type;
  15. emp_t emp_type;
  16. emp_anz INTEGER;
  17.  
  18. BEGIN
  19. SELECT deptno, NULL bulk collect INTO dept_t FROM dept;
  20.  
  21. FOR i IN 1..dept_t.COUNT loop
  22.   SELECT SUM(sal) INTO dept_t(i).deptsal FROM emp WHERE deptno = dept_t(i).deptno;
  23.   SELECT COUNT (*) INTO emp_anz FROM emp WHERE deptno = dept_t(i).deptno;
  24.   dept_t(i).deptsal := dept_t(i).deptsal / emp_anz;
  25.  
  26.   SELECT * bulk collect INTO emp_t FROM emp WHERE deptno = dept_t (i).deptno;
  27.   FOR t IN 1..emp_t.COUNT loop
  28.     IF (emp_t(t).sal < dept_t(i).deptsal) THEN
  29.       UPDATE emp SET sal = emp_t(t).sal*1.03 WHERE empno = emp_t(t).empno;
  30.     END IF;
  31.   END loop;
  32.  
  33.   dbms_output.put_line ('DEPT: ' || dept_t(i).deptno || ' D_Gehalt: ' || dept_t(i).deptsal);
  34. END loop;
  35. END;
Advertisement
Add Comment
Please, Sign In to add comment