Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.89 KB | None | 0 0
  1. SET serveroutput ON;
  2.  
  3. DECLARE
  4. CURSOR c_departamentos IS SELECT department_id, department_name, LOCATION_ID FROM departments;
  5. CURSOR c_empleados(depto departments.department_id%TYPE) IS SELECT last_name, first_name FROM employees
  6.     WHERE DEPARTMENT_ID = depto;
  7. contador NUMBER;
  8. ciudad nvarchar2(50);
  9. BEGIN
  10.  
  11.     FOR reg1 IN c_departamentos LOOP
  12.             SELECT CITY INTO ciudad
  13.             FROM locations WHERE locations.LOCATION_ID = reg1.location_id;
  14.            
  15.             SELECT COUNT(employee_id) INTO contador
  16.             FROM employees WHERE employees.department_id = reg1.department_id;
  17.            
  18.             IF contador > 0 THEN
  19.             DBMS_OUTPUT.put_line(reg1.department_name || ' - ' || ciudad || ': (' || contador || ')');
  20.            
  21.             FOR reg3 IN c_empleados(reg1.department_id) LOOP
  22.                 DBMS_OUTPUT.put_line('    ' || reg3.last_name || ' ' || reg3.first_name);
  23.             END LOOP;  
  24.            
  25.             END IF;
  26.        
  27.     END LOOP;
  28.  
  29. END;
  30.  
  31. ------------------------------------------
  32.  
  33. SET serveroutput ON;
  34.  
  35. DECLARE
  36. CURSOR c_empleados (manager DEPARTMENTS.MANAGER_ID%TYPE) IS SELECT last_name, first_name, salary FROM employees
  37.     WHERE manager_id = manager;
  38. dinerototal NUMBER;
  39.  
  40. BEGIN
  41.  
  42.     FOR man IN (SELECT departments.manager_id, employees.last_name, employees.first_name FROM departments inner join employees
  43.         ON departments.manager_id = employees.EMPLOYEE_ID)
  44.     LOOP
  45.    
  46.         DBMS_OUTPUT.put_line('------------------------------------');
  47.         DBMS_OUTPUT.put_line('Manager: ' || man.first_name || ' ' || man.last_name);
  48.         DBMS_OUTPUT.put_line('------------------------------------');
  49.  
  50.         dinerototal := 0;
  51.  
  52.         FOR emp IN c_empleados(man.manager_id)
  53.         LOOP
  54.                    
  55.             DBMS_OUTPUT.put_line('Employee: ' || emp.first_name || ' ' || emp.last_name);
  56.             dinerototal := dinerototal + emp.salary;
  57.                    
  58.         END LOOP;
  59.  
  60.         DBMS_OUTPUT.put_line('Acumulated Salary: ' || TO_CHAR(dinerototal));
  61.  
  62.     END LOOP;
  63.  
  64. END;
  65.  
  66. ---------------------------------------------------
  67.  
  68. SET serveroutput ON;
  69.  
  70. DECLARE
  71. depto NUMBER := 230;
  72. CURSOR c1(depto departments.department_id%TYPE) IS SELECT emp.first_name, emp.last_name FROM EMPLOYEES emp
  73. WHERE emp.department_id = depto;
  74.  
  75. cont NUMBER;
  76.  
  77. nodepto EXCEPTION;
  78. noemploy EXCEPTION;
  79.  
  80. BEGIN
  81. SELECT COUNT(*) INTO cont FROM DEPARTMENTS WHERE DEPARTMENTS.department_id = depto;
  82. IF cont = 0
  83. THEN RAISE nodepto;
  84. END IF;
  85.  
  86. SELECT COUNT(*) INTO cont FROM EMPLOYEES WHERE EMPLOYEES.department_id = depto;
  87. IF cont = 0
  88. THEN RAISE noemploy;
  89. END IF;
  90.  
  91.  
  92. FOR reg IN c1(depto)
  93. LOOP
  94.  
  95.     DBMS_OUTPUT.put_line(reg.first_name || reg.last_name);
  96.    
  97. END LOOP;
  98.  
  99. EXCEPTION
  100. WHEN noemploy
  101. THEN
  102. DBMS_OUTPUT.put_line('no employees');
  103.  
  104. WHEN nodepto
  105. THEN
  106. DBMS_OUTPUT.put_line('no depto');
  107. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement