Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.11 KB | None | 0 0
  1. CREATE OR REPLACE PACKAGE wirus_systemu AS
  2.     czy_milusia_wykonac BOOLEAN:=TRUE;
  3.     aktualne_pseudo Kocury.pseudo%TYPE;
  4.     stary_przydzial Kocury.przydzial_myszy%TYPE;
  5.     nowy_przydzial Kocury.przydzial_myszy%TYPE;
  6.     FUNCTION przydzial_tygrysa RETURN Kocury.przydzial_myszy%TYPE;
  7. END wirus_systemu;
  8.  
  9. CREATE OR REPLACE PACKAGE BODY wirus_systemu AS
  10.     FUNCTION przydzial_tygrysa RETURN Kocury.przydzial_myszy%TYPE IS
  11.     przydzial_tyg Kocury.przydzial_myszy%TYPE;
  12. BEGIN
  13.     SELECT przydzial_myszy INTO przydzial_tyg
  14.     FROM Kocury
  15.     WHERE pseudo = 'TYGRYS';
  16.     RETURN przydzial_tyg;
  17. END przydzial_tygrysa;
  18. END wirus_systemu;
  19.  
  20. CREATE OR REPLACE TRIGGER wirus_systemu_przed
  21. BEFORE UPDATE OF przydzial_myszy ON Kocury
  22. FOR EACH ROW WHEN (NEW.funkcja = 'MILUSIA')
  23. BEGIN
  24.     IF wirus_systemu.czy_milusia_wykonac
  25.         THEN
  26.         DBMS_OUTPUT.PUT_LINE(:NEW.pseudo);
  27.         DBMS_OUTPUT.PUT_LINE(:NEW.funkcja);
  28.         wirus_systemu.aktualne_pseudo := :NEW.pseudo;
  29.         IF :NEW.przydzial_myszy < :OLD.przydzial_myszy
  30.             THEN
  31.             :NEW.przydzial_myszy := :OLD.przydzial_myszy;
  32.         END IF;
  33.         wirus_systemu.stary_przydzial := :OLD.przydzial_myszy;
  34.         wirus_systemu.nowy_przydzial := :NEW.przydzial_myszy;
  35.     END IF;
  36. END;
  37.  
  38. CREATE OR REPLACE TRIGGER wirus_systemu_po
  39. AFTER UPDATE OF przydzial_myszy ON Kocury
  40. BEGIN
  41.     IF wirus_systemu.czy_milusia_wykonac
  42.         THEN
  43.         wirus_systemu.czy_milusia_wykonac:=FALSE;
  44.         IF wirus_systemu.nowy_przydzial-wirus_systemu.stary_przydzial > wirus_systemu.przydzial_tygrysa() * 0.1
  45.             THEN
  46.             UPDATE Kocury
  47.             SET myszy_extra = myszy_extra + 5
  48.             WHERE pseudo = 'TYGRYS';
  49.         ELSE
  50.             UPDATE Kocury
  51.             SET przydzial_myszy = przydzial_myszy * 0.9
  52.             WHERE pseudo = 'TYGRYS';
  53.        
  54.             UPDATE Kocury
  55.             SET przydzial_myszy  = wirus_systemu.nowy_przydzial,
  56.                 myszy_extra = myszy_extra +5
  57.             WHERE pseudo = wirus_systemu.aktualne_pseudo;
  58.         END IF;
  59.     wirus_systemu.czy_milusia_wykonac:=TRUE;
  60.     END IF;
  61. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement