Advertisement
Guest User

SPROC

a guest
Oct 23rd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. DELIMITER $$
  2. CREATE PROCEDURE course_schedule_assignment (IN course_code CHAR(3), IN ideal_start_date DATE)
  3. BEGIN
  4. DECLARE complete BOOLEAN DEFAULT FALSE;
  5. DECLARE start_date DATE;
  6. DECLARE module_code VARCHAR(2);
  7. DECLARE modules CURSOR FOR
  8. SELECT code FROM module
  9. WHERE (course_code = module.course_code);
  10. DECLARE CONTINUE HANDLER FOR NOT FOUND
  11. SET complete = TRUE;
  12.  
  13. IF (DAYOFWEEK(ideal_start_date) = 7) OR (DAYOFWEEK(ideal_start_date) = 1) THEN
  14. set start_date = DATE_ADD(ideal_start_date, INTERVAL 2 DAY);
  15. ELSE set start_date = ideal_start_date;
  16. END IF;
  17.  
  18. IF (start_date <= DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) THEN
  19. SIGNAL SQLSTATE '45000'
  20. SET MESSAGE_TEXT = 'Invalid date. Please select a date at least 1 month in the future';
  21. END IF;
  22.  
  23. IF (course_code NOT IN (SELECT code FROM course)) THEN
  24. SIGNAL SQLSTATE '45000'
  25. SET MESSAGE_TEXT = 'Invalid Course. Please select a valid course';
  26. END IF;
  27.  
  28. OPEN modules;
  29. SET module_code ='';
  30.  
  31. main_loop : loop
  32. FETCH NEXT FROM modules INTO module_code;
  33. IF COMPLETE THEN
  34. LEAVE main_loop;
  35. ELSE
  36.  
  37. INSERT INTO session (code, date, room)
  38. VALUES (module_code, start_date ,'');
  39. SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
  40.  
  41. END IF;
  42. END LOOP;
  43. CLOSE modules;
  44. END$$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement