데이터베이스에서도 프로그램 처리가 가능하다니.. 데이터베이스 공부 좀 해야겠다는..
## LOOP 문
DELIMITER $$
DROP PROCEDURE IF EXISTS loop_test $$
CREATE PROCEDURE loop_test(IN var INT)
BEGIN
DECLARE nCnt INT DEFAULT 0;
DECLARE nTot INT DEFAULT 0;
loop_xxxx:LOOP
IF (var <= nCnt) THEN
LEAVE loop_xxxx; -- loop 탈출 조건 (탈출 조건을 사용하기 위해서는 루프의 이름이 지정되어야 함.)
END IF;
SET nCnt = nCnt + 1;
SET nTot = nTot + nCnt;
END LOOP;
SELECT CONCAT(CONCAT(CONCAT('1 부터 ', var), ' 까지의 합은 '), nTot) AS total; -- 결과 값 출력
END $$
DELIMITER ;
#########################
Call loo_test(10);
total
-----------------------
1 부터 10 까지의 합은 55
## WHILE 문
DELIMITER $$
DROP PROCEDURE IF EXISTS while_test $$
CREATE PROCEDURE while_test(IN var INT)
BEGIN
DECLARE nCnt INT DEFAULT 0;
DECLARE nTot INT DEFAULT 0;
while_xxxx:WHILE (nCnt < var) DO
SET nCnt = nCnt + 1;
IF ((nCnt % 2) = 1) THEN
ITERATE while_xxxx; -- 아래쪽 명령은 수행하지 않고 반복문 시작 지점으로 이동(C 언어의 'continue')
END IF;
SET nTot = nTot + nCnt;
END WHILE;
SELECT CONCAT(CONCAT(CONCAT('1 부터 ', var), ' 까지의 짝수의 합은 '), nTot) AS total;
END $$
DELIMITER ;
#########################
Call while_test(10);
total
------------------------------
1 부터 10 까지의 짝수의 합은 30
## REPEAT ~ UNTIL 문
DELIMITER $$
DROP PROCEDURE IF EXISTS repeat_test $$
CREATE PROCEDURE repeat_test(IN var INT)
BEGIN
DECLARE nCnt INT DEFAULT 0;
DECLARE nTot INT DEFAULT 0;
repeat_xxxx:REPEAT
SET nCnt = nCnt + 1;
SET nTot = nTot + nCnt;
IF (nCnt >= 5) THEN
LEAVE repeat_xxxx; -- 반복문 탈출
END IF;
UNTIL nCnt >= var -- 주의 조건이 참이면 반복문 완료 (문장완료를 알리는 ';' 없음)
END REPEAT;
SELECT CONCAT(CONCAT(CONCAT('1 부터 ', nCnt), ' 까지의 합은 '), nTot) AS total;
END $$
DELIMITER ;
#########################
Call repeat_test(10);
total
----------------------
1 부터 5 까지의 합은 15
[출처] MySQL 반복문(Loop, While, Repeat)|작성자 콩이아부지
'연구개발 > MYSQL' 카테고리의 다른 글
MySQL 백업 및 복원 (0) | 2014.05.01 |
---|---|
MySQL 테이블 구조 복사 및 데이터 복사 ( Table Copy ) (0) | 2014.05.01 |
MySQL 설치하기 (0) | 2014.04.27 |
[Linux] Top 명령어 사용법 (0) | 2014.04.24 |
[MySQL] 간단한 백업과 복구방법 (0) | 2014.04.24 |