Advertisement
Kimossab

ABD - ficha 4

Oct 26th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.11 KB | None | 0 0
  1. /*2*/
  2. DECLARE
  3.   CURSOR cl IS
  4.     SELECT sal,deptno FROM Emp
  5.       WHERE deptno IN (10, 20) AND job != 'PRESIDENTE'
  6.       FOR UPDATE OF sal;
  7. BEGIN
  8.   FOR too_long_damn_son IN cl
  9.   LOOP
  10.     IF too_long_damn_son.sal < 2000 THEN
  11.       UPDATE Emp SET sal = sal * 1.1 WHERE CURRENT OF cl;
  12.     ELSE
  13.       UPDATE Emp SET sal = sal * 1.06 WHERE CURRENT OF cl;
  14.     END IF;
  15.   END LOOP;
  16. END;
  17. /*3*/
  18. DECLARE
  19.   v_job Emp.job%TYPE := '&funcao';
  20.   v_tot emp.sal%TYPE;
  21.  
  22.   CURSOR cl IS
  23.     SELECT sal FROM Emp
  24.       WHERE job = v_job
  25.       ORDER BY sal
  26.       FOR UPDATE OF sal;
  27.  
  28. BEGIN
  29.   SELECT SUM(sal) INTO v_tot FROM Emp WHERE job = v_job;
  30.  
  31.   IF v_tot IS NULL THEN
  32.     DBMS_OUTPUT.PUT_LINE('ERROR');
  33.     INSERT INTO Erros VALUES('Job inexistente',1,SYSDATE);
  34.   ELSE
  35.  
  36.     FOR x IN cl
  37.     LOOP
  38.       IF v_tot * 14 < 75000  THEN
  39.         DBMS_OUTPUT.PUT_LINE(v_tot);
  40.         UPDATE Emp SET sal = sal * 1.1 WHERE CURRENT OF cl;
  41.       ELSE
  42.         DBMS_OUTPUT.PUT_LINE('Exit');
  43.         EXIT;
  44.       END IF;
  45.       SELECT SUM(sal) INTO v_tot FROM Emp WHERE job = v_job;
  46.     END LOOP;
  47.    
  48.   END IF;
  49. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement