1. 반복 제어 : LOOP
LOOP
SQL PL;
END LOOP;
LOOP 문에는 LOOP 와 END LOOP 를 반드시 지정해야 한다.
이 사이에 반복 처리할 SQL PL 문을 작성해준다.
LOOP 문에 반복을 탈출할 탈출 조건을 작성해 주지 않으면 무한 반복되는 상태가 되기 때문에 반드시 탈출 조건을 추가해 줘야 하고, 반복을 종료하는 LEAVE 문을 지정해야 한다.
DECLARE V1 INT DEFAULT 0;
test_loop:
LOOP
SET V1 = V1 + 1;
IF (V1 >= 3) THEN
LEAVE test_loop;
END IF;
END LOOP test_loop;
위의 코드를 실행시키면 v1 이 3이 되면 작성한 탈출 조건에 의하여 IF 문을 참 조건으로 실행하게 되고 이에 따라 LEAVE 문이 실행되어 LOOP 문을 벗어나게 된다.
2. 반복 제어 : REPEAT
REPEAT
SQL PL;
UNTIL 조건식
END REPEAT;
REPEAT 문은 UNTIL 문에 작성한 조건식을 참으로 평가하기 전까지 반복하게 된다.
REPEAT 문의 UNTIL 문을 IF 문 등의 제어문으로 변형하면 LOOP 문으로 활용할 수도 있다.
3. 반복 제어 : WHILE
WHILE 조건식 DO
SQL PL;
END WHILE;
WHILE 문은 조건식이 참으로 평가되는 한 계속 반복하게 된다.
이 조건식을 IF 문 등으로 치환하면 LOOP 문으로도 사용 가능하다.
4. 반복 제어 : FOR
FOR 루프명 AS SELECT문 DO
SQL PL;
END FOR;
FOR 문에는 다른 반복 제어문과 달리 SELECT 문이 추가된다.
이 SELECT 문을 통한 결과 컬럼명은 결과 컬럼 변수가 되기 때문에 고유한 이름이어야 하며, 수식인 경우 이름을 지정해 줘야 한다.
BODY 에서 결과 컬럼 변수를 사용하려면, 결과컬럼명 또는 루프명.결과컬럼명 형식으로 사용할 수 있다.
단, 결과 컬럼 변수는 FOR 문 안에서만 유효한 값이기 때문에 END FOR 이후에 접근하려고 하면 오류가 발생한다.
또다른 차이점은 탈출 조건이 따로 없다는 것이다.
FOR 문은 SELECT 문의 결과 레코드 건수에 따라 반복이 진행된다.
즉, SELECT 문의 결과 레코드가 5건인 경우에는 BODY 에 작성된 코드가 5번 실행된다는 것이다.
5. LEAVE 문
LEAVE 문은 LOOP 문, REPEAT 문, WHILE 문 FOR 문 등 반복 제어문에 활용할 수 있는 탈출 키워드이다.
LEAVE 문을 작성하게 되면 원하는 시점에 탈출할 수 있도록 임의의 조작이 가능해진다.
'SQL > DB2' 카테고리의 다른 글
DB2 흐름 제어 : 이동 제어 ITERATE, GOTO, RETURN (0) | 2022.12.19 |
---|---|
DB2 흐름 제어 : 비교 제어 IF , CASE 문 (0) | 2022.12.19 |
DB2 VALUES INTO 문 (0) | 2022.12.19 |
DB2 SELECT INTO 문 (0) | 2022.12.08 |
DB2 DECLARE TYPE, DECLARE, SET (0) | 2022.12.07 |