레이블

    레이블(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;

     

    'DATABASE > SQL, PL-SQL' 카테고리의 다른 글

    컬렉션 - 2  (0) 2021.02.04
    컬렉션(Collection) - 1  (0) 2021.02.03
    제어문 - 1  (0) 2021.02.02
    CLOB  (0) 2021.01.27
    트랜잭션(Transaction) 제어  (0) 2021.01.27

    댓글