Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  4.  
  5. ALTER SCHEMA `calendar` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ;
  6.  
  7. CREATE TABLE IF NOT EXISTS `calendar`.`Absence` (
  8. `idAbsence` INT(11) NOT NULL,
  9. `date` DATE NOT NULL,
  10. `idReason` TINYINT(4) NOT NULL,
  11. PRIMARY KEY (`idAbsence`),
  12. INDEX `INDEX` (`idReason` ASC),
  13. CONSTRAINT `fx_AbsenceReason`
  14. FOREIGN KEY (`idReason`)
  15. REFERENCES `calendar`.`Reason` (`idReason`)
  16. ON DELETE NO ACTION
  17. ON UPDATE NO ACTION)
  18. ENGINE = InnoDB
  19. DEFAULT CHARACTER SET = utf8;
  20.  
  21. CREATE TABLE IF NOT EXISTS `calendar`.`Reason` (
  22. `idReason` TINYINT(4) NOT NULL,
  23. `reason` VARCHAR(45) NOT NULL,
  24. PRIMARY KEY (`idReason`))
  25. ENGINE = InnoDB
  26. DEFAULT CHARACTER SET = utf8;
  27.  
  28.  
  29. DELIMITER $$
  30. USE `calendar`$$
  31. CREATE PROCEDURE `addAbsence`(
  32. IN p_startDate DATE,
  33. IN p_endDate DATE,
  34. IN p_idReason TINYINT
  35. )
  36. BEGIN
  37. DECLARE v_date DATE DEFAULT p_startDate;
  38. DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
  39. BEGIN
  40. ROLLBACK;
  41. RESIGNAL;
  42. END;
  43. IF p_endDate < p_startDate THEN
  44. SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'End date before start date';
  45. END IF;
  46.  
  47. START TRANSACTION;
  48. REPEAT
  49. INSERT INTO
  50. Absence
  51. SET
  52. idAbsence = NULL,
  53. date = v_date,
  54. idReason = p_idReason;
  55. SET v_date = DATE_ADD(v_date, INTERVAL 1 DAY);
  56. UNTIL v_date > p_endDate END REPEAT;
  57. COMMIT;
  58. SELECT 1 as `status`;
  59. END$$
  60.  
  61. DELIMITER ;
  62.  
  63. SET SQL_MODE=@OLD_SQL_MODE;
  64. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  65. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement