Advertisement
eliax1996

Untitled

Feb 5th, 2019
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.92 KB | None | 0 0
  1. CREATE OR REPLACE TRIGGER schedulation_meeting
  2.   AFTER INSERT ON PEOPLE_AVAILABILITY -- BEFORE DELETE OR INSERT OR UPDATE ON
  3.   FOR EACH ROW
  4. --WHEN (new.Empno > 0)
  5. DECLARE
  6.     sal_diff NUMBER;
  7.     numb_partecipant NUMBER;
  8.     avaiability_people NUMBER;
  9.     invited_people NUMBER;
  10.     date_selected NUMBER;
  11.     room_number NUMBER;
  12. BEGIN
  13.     -- retriving the value of the number of invited
  14.     SELECT NumberOfInvitedPeople INTO invited_people FROM MEETING M
  15.     WHERE M.Mcode = :NEW.MCode;
  16.  
  17.  
  18.     -- retriving the value of the number of partecipant
  19.     SELECT NumberOfParticipants INTO numb_partecipant FROM MEETING M
  20.     WHERE M.Mcode = :NEW.MCode;
  21.  
  22.     IF (numb_partecipant == NULL) THEN
  23.         numb_partecipant = 0;
  24.     END IF;
  25.  
  26.     numb_partecipant=numb_partecipant+1
  27.  
  28.     -- update the number of partecipant
  29.     UPDATE MEETING
  30.     SET NumberOfParticipants = numb_partecipant
  31.     WHERE M.Mcode = :NEW.MCode;
  32.  
  33.  
  34.     IF(numb_partecipant==invited_people) THEN
  35.        
  36.         --select :NEW.NumberOfAvailablePeople into avaiability_people;
  37.         SELECT DATE INTO date_selected FROM (SELECT COUNT(*)/numb_partecipant AS frac,DATE
  38.         FROM PEOPLE_AVAILABILITY P)
  39.         WHERE frac >= 0.8; -- maximum only one can be selected
  40.  
  41.         IF(date_selected!=NULL) THEN
  42.  
  43.             SELECT RoomCode INTO room_number
  44.             FROM ROOM WHERE Capacity>= (SELECT COUNT(*)
  45.             FROM PEOPLE_AVAILABILITY P
  46.             WHERE DATE=date_selected)
  47.             AND RoomCode NOT IN (
  48.                 SELECT RoomCode
  49.                 FROM MEETING
  50.                 WHERE MeetingDate=date_selected)
  51.  
  52.             IF (date_selected != NULL) THEN
  53.                 :NEW.RoomCode = room_number;
  54.             END IF
  55.  
  56.         END IF
  57.  
  58.         --if (date_selected == NULL) then
  59.         --    RAISE_APPLICATION_ERROR(-20001,'not the minimum amount of people can become in this date diocane');
  60.         --end if
  61.     END IF
  62.  
  63. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement