SQL
반복문
#
Find similar titles
- (rev. 3)
- Dragon
Structured data
- Category
- Database
SQL/반복문 #
FOR LOOP #
Index가 lower_bound 부터 upper_bound 까지 증가하며 statements를 반복처리 하는 문장이다.
문법 #
FOR index IN [ REVERSE ] lower_bound..upper_bound LOOP
statements
END LOOP;
- Lower_bound 에서 upper_bound 값으로 진행한다.
- REVERSE 키워드가 사용되면 lower_bound 에서 upper_bound 값으로 진행한다.
- IN 구절엔 lower_bound, upper_bound 또는 범위를 갖는 select 문이나 coursor문장이 가능하다.
예제 #
BEGIN
DBMS_OUTPUT.PUT_LINE ('lower_bound < upper_bound');
FOR i IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE (i);
END LOOP;
DBMS_OUTPUT.PUT_LINE ('lower_bound = upper_bound');
FOR i IN 2..2 LOOP
DBMS_OUTPUT.PUT_LINE (i);
END LOOP;
DBMS_OUTPUT.PUT_LINE ('lower_bound > upper_bound');
FOR i IN 3..1 LOOP
DBMS_OUTPUT.PUT_LINE (i);
END LOOP;
END;
LOOP문 #
LOOP문 내의 statements 를 반복처리 하는 문장이다.
문법 #
LOOP
statements
END LOOP;
- EXIT 문을 사용하여 LOOP문을 벗어날 수 있다.
- EXITH WHEN 문을 사용하여 조건에 따라 LOOP문을 벗어날 수 있다.
예제 #
DECLARE
s PLS_INTEGER := 0;
i PLS_INTEGER := 0;
j PLS_INTEGER;
BEGIN
<<outer_loop>>
LOOP
i := i + 1;
j := 0;
<<inner_loop>>
LOOP
j := j + 1;
s := s + i * j; -- Sum several products
EXIT inner_loop WHEN (j > 5);
EXIT outer_loop WHEN ((i * j) > 15);
END LOOP inner_loop;
END LOOP outer_loop;
DBMS_OUTPUT.PUT_LINE
('The sum of products equals: ' || TO_CHAR(s));
END;
WHILE LOOP문 #
WHILE문 안의 조건절이 true일겨우 계속 반복되는 Loop문이다.
문법 #
WHILE condition LOOP
statements
END LOOP;
- 무한 Loop를 반복하는 것을 방지하기 위해 실행되는 절에는 반드시 조건절을 false로 변경하는 로직이 담겨있어야 한다.
예제 #
DECLARE
done BOOLEAN := FALSE;
BEGIN
WHILE done LOOP
DBMS_OUTPUT.PUT_LINE ('This line does not print.');
done := TRUE; -- This assignment is not made.
END LOOP;
WHILE NOT done LOOP
DBMS_OUTPUT.PUT_LINE ('Hello, world!');
done := TRUE;
END LOOP;
END;
Result:
Hello, world!