프로시져 질문입니다. 채택완료

Copy
BEGIN
    DECLARE loopState int DEFAULT 1;
    DECLARE whileCount int DEFAULT 0;
    DECLARE TIME_COUNT int DEFAULT 0;
    DECLARE OT VARCHAR(10);
    DECLARE OM VARCHAR(10);
    DECLARE ET VARCHAR(10);
    DECLARE EM VARCHAR(10);
    DECLARE START_TIME VARCHAR(10);
    DECLARE LAST_TIME VARCHAR(10);
    
    SET OT = OPEN_TIME;
    SET OM = OPEN_MINUTES;
    SET ET = CLOSE_TIME;
    SET EM = CLOSE_MINUTES;
    
    IF (OT = '0' AND OM = '0' AND ET = '0' AND EM = '0') THEN
    
        SET START_TIME = '23:30:00';
        SET LAST_TIME = '23:30:00';
        
      ELSE
      
          IF OM <= '30' AND OM != '0' THEN
              SET OM = '30';
          ELSE
          SET OM = '00';
        END IF;
        
        IF EM <= '30' AND EM != '0' THEN
              SET EM = '30';
          ELSE
          SET EM = '00';
        END IF;
              
      SET START_TIME = DATE_ADD(STR_TO_DATE('09:00', '%H:%i'), INTERVAL -30 MINUTE);
      SET LAST_TIME = DATE_ADD(STR_TO_DATE('04:30', '%H:%i'), INTERVAL -30 MINUTE);
      
    END IF;
                            
   WHILE (loopState > 0) DO
   
       WHILE (whileCount < 2) DO
       
            SET START_TIME = DATE_ADD(STR_TO_DATE(START_TIME, '%H:%i'), INTERVAL +30 MINUTE);
            SET TIME_COUNT = TIME_COUNT + 1;
            
            IF START_TIME = LAST_TIME THEN
                SET loopState = 0;
            END IF;
            
            SET whileCount = whileCount + 1;
        
          END WHILE;
            
         IF START_TIME = LAST_TIME THEN
          SET loopState = 0;
      END IF;    
          
  END WHILE;
  
    SELECT TIME_COUNT;
    
END

 

call time(0,0,0,0);

범위 카운트 프로시져를 짜봤는데.. 무한 루프를 돌고있네용.. 혹시 좀 봐주실수 있나요?
제 생각대로라면,, 48이 나와야 하는데말이죠,,,,,,,ㅠㅠㅠ 도움좀 부탁드립니다.

답변 1개

언어가 SQL인가요?  SELECT가 있는 것 을 보면,  정확하게 어떤 랭귀지인지를 알려주셔야..

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

네 mysql 입니다 ㅎㅎ;;

24시간을 30분단위로 쪼개서 48이라는 카운트를 받아와야하는데,, 무한루프를 돌고있더라구요,,

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고