Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DECLARE
  2.     zmiany NUMBER := 0;
  3.     suma NUMBER;
  4.     CURSOR koty IS
  5.         SELECT imie, przydzial_myszy, max_myszy FROM kocury JOIN funkcje ON kocury.funkcja = funkcje.funkcja
  6.         FOR UPDATE OF przydzial_myszy ORDER BY przydzial_myszy ASC;
  7.     kot koty%ROWTYPE;
  8.     suma_po NUMBER;
  9. BEGIN
  10.     SELECT SUM(NVL(przydzial_myszy,0)) INTO suma FROM kocury;
  11.      <<open_cursor_loop>>
  12.     WHILE suma < 1050
  13.       LOOP
  14.         OPEN koty;
  15.         LOOP
  16.             FETCH koty INTO kot; EXIT WHEN koty%NOTFOUND;
  17.             IF kot.przydzial_myszy != kot.max_myszy THEN
  18.                 suma := suma - kot.przydzial_myszy;
  19.                 UPDATE Kocury
  20.                 SET przydzial_myszy = CASE WHEN kot.przydzial_myszy * 1.1 < kot.max_myszy THEN przydzial_myszy * 1.1
  21.                    ELSE kot.max_myszy END
  22.                 WHERE CURRENT OF koty;
  23.                 SELECT przydzial_myszy INTO suma_po FROM kocury k WHERE k.imie = kot.imie;
  24.                 suma := suma + suma_po;
  25.                 zmiany := zmiany + 1;
  26.             END IF;
  27.             IF suma > 1050 THEN EXIT open_cursor_loop; END IF;
  28.             END LOOP;
  29.         CLOSE koty;
  30.         END LOOP;
  31.     DBMS_OUTPUT.PUT_LINE('Calk. przydzial w stadku ' ||  suma || ' Zmian - '|| zmiany);
  32. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement