Advertisement
Guest User

Untitled

a guest
Jun 10th, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 0.86 KB | None | 0 0
  1. CREATE OR REPLACE TRIGGER TRG_LATE_RETURN
  2. BEFORE UPDATE
  3. ON DETAILRENTAL
  4. FOR EACH ROW
  5. WHEN (OLD.due_date <> NEW.due_date OR OLD.RETURN_DATE <> NEW.RETURN_DATE)
  6. DECLARE
  7. oldRetDate DETAILRENTAL.RETURN_DATE%TYPE :=old.RETURN_DATE;
  8. newRetDate DETAILRENTAL.RETURN_DATE%TYPE :=NEW.RETURN_DATE;
  9. oldDueDate DETAILRENTAL.due_date%TYPE := old.due_date;
  10. newDueDate DETAILRENTAL.due_date%TYPE := NEW.due_date;
  11. BEGIN
  12. IF oldDueDate <> newDueDate THEN
  13.    DETAILRENTAL.DAYS_LATE := newRetDate - newDueDate;
  14. ELSE
  15.    IF newRetDate = NULL THEN
  16.       DETAILRENTAL.DAYS_LATE := NULL;
  17.    ELSIF oldRetDate <= :oldDueDate  THEN
  18.       DETAILRENTAL.DAYS_LATE := 0;
  19.    ELSIF newRetDate > :oldDueDate THEN
  20.      DETAILRENTAL.DAYS_LATE := newRetDate - newDueDate;
  21.    END IF;
  22. END IF;
  23. EXCEPTION
  24.   WHEN OTHERS THEN
  25.    DBMS_OUTPUT.PUT_LINE ('Unexpected error occured');
  26. END;
  27. /
  28. show errors;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement