Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE
- zmiany NUMBER := 0;
- suma NUMBER;
- CURSOR koty IS
- SELECT imie, przydzial_myszy, max_myszy FROM kocury JOIN funkcje ON kocury.funkcja = funkcje.funkcja
- FOR UPDATE OF przydzial_myszy ORDER BY przydzial_myszy ASC;
- kot koty%ROWTYPE;
- suma_po NUMBER;
- BEGIN
- SELECT SUM(NVL(przydzial_myszy,0)) INTO suma FROM kocury;
- <<open_cursor_loop>>
- WHILE suma < 1050
- LOOP
- OPEN koty;
- LOOP
- FETCH koty INTO kot; EXIT WHEN koty%NOTFOUND;
- IF kot.przydzial_myszy != kot.max_myszy THEN
- suma := suma - kot.przydzial_myszy;
- UPDATE Kocury
- SET przydzial_myszy = CASE WHEN kot.przydzial_myszy * 1.1 < kot.max_myszy THEN przydzial_myszy * 1.1
- ELSE kot.max_myszy END
- WHERE CURRENT OF koty;
- SELECT przydzial_myszy INTO suma_po FROM kocury k WHERE k.imie = kot.imie;
- suma := suma + suma_po;
- zmiany := zmiany + 1;
- END IF;
- IF suma > 1050 THEN EXIT open_cursor_loop; END IF;
- END LOOP;
- CLOSE koty;
- END LOOP;
- DBMS_OUTPUT.PUT_LINE('Calk. przydzial w stadku ' || suma || ' Zmian - '|| zmiany);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement