SQL/ORACLE SQL

PL/SQL : 제어 문, 반복 문

HicKee 2022. 11. 11. 16:07

제어 문 (선택문)

 

IF THEN END IF
IF THEN ELSE END IF
IF THEN ELSIF

IF

 - 조건에 따라 어떤 명령을 선택적으로 처리

DECLARE -- 선언부
--변수 선언
    GRADE CHAR(10);
    RESULT VARCHAR2(30);
BEGIN -- 실행부
    GRADE := 'B'; --값을 대입
IF GRADE = 'A'THEN  --비교연산자 (=)
    RESULT := 'A학점';
ELSIF GRADE = 'B'THEN 
    RESULT := 'B학점';
ELSIF GRADE = 'C'THEN 
    RESULT := 'C학점';
ELSE
    RESULT := '제적';
END IF;
    DBMS_OUTPUT.PUT_LINE('학점 : '||GRADE||'=>'||RESULT);
EXCEPTION -- 예외처리부
    WHEN OTHERS THEN -- 알수없는 에러
        DBMS_OUTPUT.PUT_LINE('에러발생');
END;
/

CASE 

 - 범위가 아닌 값이 오는 경우

DECLARE
    GRADE CHAR(5);
    RESULT VARCHAR2(20);
BEGIN
GRADE := 'B';
    CASE GRADE
        WHEN 'A' THEN
            RESULT :='A학점';
        WHEN 'B' THEN
            RESULT :='B학점';
        WHEN 'C' THEN
            RESULT :='C학점';
        WHEN 'D' THEN
            RESULT :='D학점';
    ELSE
        RESULT := '제적';
    END CASE;
        DBMS_OUTPUT.PUT_LINE('학점정보 : '||GRADE||'='||RESULT);
EXCEPTION 
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('에러발생');
END;

 

반복문

 

 

BASIC LOOP
FOR LOOP
WHILE LOOP

 

FOR

DECLARE 
    I NUMBER :=0;  -- 변수 초기화
    RES NUMBER :=0;
BEGIN
    FOR I IN 1..10 LOOP --1부터 10까지의 숫자
    RES := I*2;
    DBMS_OUTPUT.PUT_LINE(RES);
    END LOOP;
END;
/

WHILE

 - 카운터 변수가 필요하다

DECLARE 
    I NUMBER  :=0;
    RES NUMBER :=0;
BEGIN
    I :=1;
    WHILE I<=10 LOOP
    RES := I*2;
    DBMS_OUTPUT.PUT_LINE(RES);
    I := I+1;
    END LOOP;
END;
/

무한루프

DECLARE 
    V_NUM NUMBER :=0;
    RES INT :=0;
BEGIN
    V_NUM:=1;
    LOOP
        RES := RES+V_NUM;
        IF V_NUM > 10 THEN
        EXIT;
        END IF;
        V_NUM := V_NUM+1;
        DBMS_OUTPUT.PUT_LINE(RES);
    END LOOP;
END;
/

 

'SQL > ORACLE SQL' 카테고리의 다른 글

PROCEDURE : 프로 시저  (0) 2022.11.14
PL/SQL : 커서 CURSOR  (0) 2022.11.11
PL/SQL : 변수 선언  (0) 2022.11.11
VIEW : 뷰  (0) 2022.11.10
제약 조건 : CHECK, DEFAULT  (0) 2022.11.10