DATABASE/SQL, PL-SQL
제어문 - 2
devstep88
2021. 2. 2. 22:00
레이블
레이블(Label)은 소스 코드 내의 특정 문장을 가리키는 식별자이다. GOTO문에서 다음 실행할 위치를 지정하기 위해서는 반드시 레이블을 사용해야만 한다. 뒤에서 설명할 LOOP문에서도 옵션으로 레이블이 사용된다.
레이블명으로 사용가능한 문자열의 기준은 변수명의 기준과 동일하며 한글도 사용가능하다.
변수명과 마찬가지로 레이블명에 공백문자나 특수 문자를 사용할 수 없고, 대소문자를 구별하지 않지만, 역시 변수명과 마찬가지로 큰따옴표로 레이블명을 둘러싸는 경우에는 어떤 문자라도 사용 가능하고 대소문자도 구별하게 된다.
레이블 다음에는 반드시 블록 또는 실행 가능한 문장이 따라와야 한다.
DECLARE
v_num NUMBER := 0;
BEGIN
IF v_num = 0 THEN
GOTO block_label; -- 뒤따르는 블록 레이블로 이동
END IF;
<<block_label>> -- BLOCK에 대한 레이블
BEGIN
IF v_num = 0 THEN
GOTO statement_label; -- 뒤따르는 문장 레이블로 이동
END IF;
<<statement_label>> --문장(실행문)에 대한 레이블
v_num := v_num + 1;
IF v_num = 0 THEN
GOTO statement_label; --앞에 위치한 문장 레이블로 이동
END IF;
END;
IF v_num = 0 THEN
GOTO block_label; -- 앞에 위치한 블록 레이블로 이동
END IF;
END;
GOTO문 외에도 EXIT, EXIT WHEN, CONTINUE, CONTINUE WHEN절에서도 레이블을 사용할 수 있다.
순환문
지정된 범위의 소스코드 문장을 반복적으로 실행하도록 하는 제어문
LOOP문, WHITE문, FOR문 세가지가 있다.
기본 LOOP문
-- 가장 단순한 LOOP문
BEGIN
LOOP -- 이 LOOP문은 종료조건이 없는 무한 LOOP다 CTRL+C로 정지
NULL;
END LOOP;
END;
탈출문
GOTO, EXIT, EXIT WHEN이 있다.
- GOTO : LOOP 밖에 선언된 레이블 다음의 실행문으로 실행위치를 이동
- EXIT: LOOP를 즉시 탈출하여 END LOOP 다음의 실행문으로 실행 위치를 이동
- EXIT WHEN: WHEN조건을 만족 시 END LOOP 다음의 실행문으로 실행 위치 이동
WHITE LOOP문
WHITE 바로 다음에 주어진 조건식이 TRUE 값을 가지는 동안 LOOP블록을 반복 수행한다.
DECLARE
v_num NUMBER := 1;
BEGIN
WHITE v_num <= 3
LOOP
DBMS_OUTPUT_PUT_LINE('루프 내부 : '||v_num);
v_num := v_num + 1;
END LOOP;
DBMS_OUTPUT_PUT_LINE('루프 종료 : '||v_num);
END;
FOR LOOP문
순환 값의 범위를 지정하여 해당 횟수만큼 LOOP블록을 반복 수행한 후 LOOP를 종료하는 순환문
FOR 인덱스변수 IN [REVERSE] 하한값....상한값
LOOP
실행문
END LOOP;