Использование Cursor в while Loop хранимой процедуры в MySQL - PullRequest
0 голосов
/ 03 июня 2018

Проблема в том, что пока цикл не работает в соответствии с моими ожиданиями. Я ожидаю этого результата ... 2018-05-01 2018-05-02 2018-05-03 2018-05-06 2018-05-072018-05-08 2018-05-09 2018-05-10 2018-05-13 2018-05-14 2018-05-15 2018-05-16 2018-05-17 2018-05-20 2018-05-212018-05-22 2018-05-23 2018-05-24 2018-05-27 2018-05-28 2018-05-29 2018-05-30 2018-05-31

  BEGIN
  declare varDay date;
  DECLARE v_finished INT DEFAULT 0;
  DECLARE weekday VARCHAR(20);
  DECLARE weekend_cursor CURSOR FOR SELECT weekendDay FROM weekend;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET  v_finished=1;

  DROP TEMPORARY TABLE IF EXISTS daterange;
     CREATE TEMPORARY TABLE daterange(
     id INT NOT NULL AUTO_INCREMENT,
      day DATE,
     PRIMARY KEY(id)
      ); 



    WHILE(sdate <= enddate) DO
     OPEN weekend_cursor;
     get_weekend:LOOP
       FETCH weekend_cursor INTO weekday;
        IF v_finished =1 THEN 
         CLOSE weekend_cursor;  
          LEAVE get_weekend;

          ELSEIF DAYNAME(sdate)!=weekday THEN
           INSERT INTO daterange (day) values (sdate);
          END IF;
        END LOOP  get_weekend;


    SET sdate = DATE_ADD(sdate, INTERVAL 1 DAY);
    SET varDay = sdate;
   END WHILE;

   SELECT * FROM daterange;
   END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...