Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PACKAGE wirus_systemu AS
- czy_milusia_wykonac BOOLEAN:=TRUE;
- aktualne_pseudo Kocury.pseudo%TYPE;
- stary_przydzial Kocury.przydzial_myszy%TYPE;
- nowy_przydzial Kocury.przydzial_myszy%TYPE;
- FUNCTION przydzial_tygrysa RETURN Kocury.przydzial_myszy%TYPE;
- END wirus_systemu;
- CREATE OR REPLACE PACKAGE BODY wirus_systemu AS
- FUNCTION przydzial_tygrysa RETURN Kocury.przydzial_myszy%TYPE IS
- przydzial_tyg Kocury.przydzial_myszy%TYPE;
- BEGIN
- SELECT przydzial_myszy INTO przydzial_tyg
- FROM Kocury
- WHERE pseudo = 'TYGRYS';
- RETURN przydzial_tyg;
- END przydzial_tygrysa;
- END wirus_systemu;
- CREATE OR REPLACE TRIGGER wirus_systemu_przed
- BEFORE UPDATE OF przydzial_myszy ON Kocury
- FOR EACH ROW WHEN (NEW.funkcja = 'MILUSIA')
- BEGIN
- IF wirus_systemu.czy_milusia_wykonac
- THEN
- DBMS_OUTPUT.PUT_LINE(:NEW.pseudo);
- DBMS_OUTPUT.PUT_LINE(:NEW.funkcja);
- wirus_systemu.aktualne_pseudo := :NEW.pseudo;
- IF :NEW.przydzial_myszy < :OLD.przydzial_myszy
- THEN
- :NEW.przydzial_myszy := :OLD.przydzial_myszy;
- END IF;
- wirus_systemu.stary_przydzial := :OLD.przydzial_myszy;
- wirus_systemu.nowy_przydzial := :NEW.przydzial_myszy;
- END IF;
- END;
- CREATE OR REPLACE TRIGGER wirus_systemu_po
- AFTER UPDATE OF przydzial_myszy ON Kocury
- BEGIN
- IF wirus_systemu.czy_milusia_wykonac
- THEN
- wirus_systemu.czy_milusia_wykonac:=FALSE;
- IF wirus_systemu.nowy_przydzial-wirus_systemu.stary_przydzial > wirus_systemu.przydzial_tygrysa() * 0.1
- THEN
- UPDATE Kocury
- SET myszy_extra = myszy_extra + 5
- WHERE pseudo = 'TYGRYS';
- ELSE
- UPDATE Kocury
- SET przydzial_myszy = przydzial_myszy * 0.9
- WHERE pseudo = 'TYGRYS';
- UPDATE Kocury
- SET przydzial_myszy = wirus_systemu.nowy_przydzial,
- myszy_extra = myszy_extra +5
- WHERE pseudo = wirus_systemu.aktualne_pseudo;
- END IF;
- wirus_systemu.czy_milusia_wykonac:=TRUE;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement