728x90
반응형
prinha.tistory.com/entry/MySQL-Stored-Procedure%EC%9D%98-%EC%A1%B0%EA%B1%B4%EB%AC%B8-IF-ELSEIF-CASE
WHILE
표현식값이 true면 표현식의 값이 false가 될 때까지 실행
WHILE expression DO
statements
END WHILE
USE `classicmodels`;
DROP procedure IF EXISTS `test_mysql_while_loop`;
DELIMITER $$
USE `classicmodels`$$
CREATE PROCEDURE `test_mysql_while_loop` ()
BEGIN
DECLARE X INT;
DECLARE STR VARCHAR(255);
SET X=1;
SET STR='';
WHILE X <=5 DO
SET STR = CONCAT(STR,X,',');
SET X=X+1;
END WHILE;
SELECT STR;
END$$
DELIMITER ;
CALL TEST_MYSQL_WHILE_LOOP();
REPEAT
사후 테스트(post-test)반복문으로 실행문을 실행한 후에 표현식 값을 확인
REPEAT
statements;
UNTIL expression
END REPEAT
USE `classicmodels`;
DROP procedure IF EXISTS `test_mysql_repeat_loop`;
DELIMITER $$
USE `classicmodels`$$
CREATE PROCEDURE `test_mysql_repeat_loop` ()
BEGIN
DECLARE X INT;
DECLARE STR VARCHAR(355);
REPEAT
SET X=1;
SET STR=CONCATE(STR,X,',');
UNTIL X>5
END REPEAT;
SELECT STR;
END$$
DELIMITER ;
CALL TEST_MYSQL_REPEAT_LOOP();
LOOP
LOOP문을 제어할 수 있게하는 2개의 문법 - LEAVE & ITERATE
반복 상태의 코드 구간에서 조금 더 유용성 있게하는 loop label 제공
1) LEAVE 조건을 만족할 때까지 기다리지않고 즉시 반복문을 빠져나갈 수 있게 허용한다. LEAVE문은 다른 언어에서의 break처럼 작동한다. 2) ITERATE 코드를 전부 실행시키지않고 새로운 반복을 시작하도록한다. ITERATE문은 다른 언어에서의 continue처럼 작동한다. |
USE `classicmodels`;
DROP procedure IF EXISTS `test_mysql_loop`;
DELIMITER $$
USE `classicmodels`$$
CREATE PROCEDURE `test_mysql_loop` ()
BEGIN
DECLARE X INT;
DECLARE STR VARCHAR(255);
SET X=1;
SET STR='';
loop_label:LOOP
IF X>10 THEN
LEAVE loop_label;
END IF;
SET X=X+1;
IF(X MOD 2) THEN
ITERATE loop_label;
ELSE SET STR=CONCAT(STR,X,',');
END IF;
END LOOP;
SELECT STR;
END$$
DELIMITER ;
CALL TEST_MYSQL_LOOP();
출처 및 참고 : blog.duveen.me/19?category=657591
728x90
반응형
'Data > MySQL' 카테고리의 다른 글
[MySQL] Stored Procedure의 조건문 IF ELSEIF / CASE (0) | 2021.01.08 |
---|---|
[MySQL] 저장프로시저 다중 값 반환 예제 (0) | 2021.01.07 |
[MySQL] 저장 프로시저의 매개변수 - IN, OUT, INOUT (0) | 2021.01.07 |
[MySQL] Stored Procedure의 변수 (0) | 2021.01.07 |
[MySQL] 스토어드 프로시저(Stored Procedure) 사용법 (0) | 2021.01.07 |