WHILE 문 기본 형식

WHILE <조건식> DO
	SQL 문장들
END WHILE;

EX. 1 부터 100까지의 값을 모두 더하는 기능

DROP PROCEDURE IF EXISTS whileProc;

DELIMITER $$
CREATE PROCEDURE whileProc()
BEGIN
	DECLARE num INT;
	DECLARE sum INT;
	SET num = 1;
	SET sum = 0;
	
	WHILE (num <= 100) DO
		SET sum = sum + num;
		SET num = num + 1;
	END WHILE;
	SELECT '1부터 100까지의 합 = ', sum;
END $$
DELIMITER ;

CALL whileProc();

Untitled

WHILE 문의 응용 - ITERATE, LEAVE

  1. 1에서 100까지의 합계에서 4의 배수 제외시키기
  2. 숫자를 더하는 중간에 합계가 1,000이 넘으면 더하는 것을 그만두고, 1,000이 넘는 순간의 숫자를 출력한 후 프로그램 종료

ITERATE : 지정한 레이블로 가서 계속 진행

LEAVE : 지정한 레이블을 빠져나간다. WHILE 문 종료

DROP PROCEDURE IF EXISTS whileProc2;

DELIMITER $$
CREATE PROCEDURE whileProc2()
BEGIN
	DECLARE i INT;
	DECLARE sum INT;
	SET i = 1;
	SET sum = 0;

	myWhile: -- WHILE 문을 myWhile 이라는 레이블로 지정
	WHILE (i <= 100) DO
		IF (i%4 = 0) THEN
			SET i = i + 1;
			ITERATE myWhile; -- 지정한 lable 문으로 가서 계속 진행
		END IF;
		SET sum = sum + i;
		IF (sum > 1000) THEN
			LEAVE myWhile; -- 지정한 레이블 문을 떠남. 
		END IF;
		SET i = i + 1;
	END WHILE;

	SELECT '1부터 100까지의 합(4배수 제외), 1000 넘으면 종료 ==> ', sum;
END $$
DELIMITER ;

CALL whileProc2();

Untitled