본문 바로가기

코딩 이야기/오라클

오라클 PL/SQL 제어 구조

 

 

오라클 PL/SQL 제어 구조

1. 조건문

주어진 조건에 따라 다른 PL/SQL 코드를 실행합니다.

1.1. IF 문

  • IF-THEN: 조건이 참이면 THEN 절의 코드를 실행합니다.
    
    DECLARE
        v_number NUMBER := 10;
    BEGIN
        IF v_number > 5 THEN
            DBMS_OUTPUT.PUT_LINE('숫자가 5보다 큽니다.');
        END IF;
    END;
    /
                        
  • IF-THEN-ELSE: 조건이 참이면 THEN 절, 거짓이면 ELSE 절의 코드를 실행합니다.
    
    DECLARE
        v_number NUMBER := 3;
    BEGIN
        IF v_number > 5 THEN
            DBMS_OUTPUT.PUT_LINE('숫자가 5보다 큽니다.');
        ELSE
            DBMS_OUTPUT.PUT_LINE('숫자가 5보다 작거나 같습니다.');
        END IF;
    END;
    /
                        
  • IF-ELSIF-THEN-ELSE: 여러 조건을 순차적으로 평가하고, 참인 조건의 THEN 절 코드를 실행합니다. 모든 조건이 거짓이면 ELSE 절의 코드를 실행합니다.
    
    DECLARE
        v_grade CHAR(1) := 'B';
    BEGIN
        IF v_grade = 'A' THEN
            DBMS_OUTPUT.PUT_LINE('최우수');
        ELSIF v_grade = 'B' THEN
            DBMS_OUTPUT.PUT_LINE('우수');
        ELSIF v_grade = 'C' THEN
            DBMS_OUTPUT.PUT_LINE('보통');
        ELSE
            DBMS_OUTPUT.PUT_LINE('노력 필요');
        END IF;
    END;
    /
                        

1.2. CASE 문

  • 단순 CASE 문: 하나의 표현식 값을 여러 값과 비교하여 해당하는 WHEN 절의 코드를 실행합니다. ELSE 절은 선택 사항입니다.
    
    DECLARE
        v_day NUMBER := 3;
        v_day_name VARCHAR2(20);
    BEGIN
        CASE v_day
            WHEN 1 THEN v_day_name := '월요일';
            WHEN 2 THEN v_day_name := '화요일';
            WHEN 3 THEN v_day_name := '수요일';
            WHEN 4 THEN v_day_name := '목요일';
            WHEN 5 THEN v_day_name := '금요일';
            ELSE v_day_name := '주말';
        END CASE;
        DBMS_OUTPUT.PUT_LINE('오늘은 ' || v_day_name || '입니다.');
    END;
    /
                        
  • 검색 CASE 문: 각 WHEN 절의 조건을 평가하여 처음으로 참이 되는 조건의 코드를 실행합니다. ELSE 절은 선택 사항입니다.
    
    DECLARE
        v_score NUMBER := 85;
        v_result VARCHAR2(20);
    BEGIN
        CASE
            WHEN v_score >= 90 THEN v_result := '합격 (매우 잘함)';
            WHEN v_score >= 80 THEN v_result := '합격 (잘함)';
            WHEN v_score >= 70 THEN v_result := '합격 (보통)';
            ELSE v_result := '불합격';
        END CASE;
        DBMS_OUTPUT.PUT_LINE('결과: ' || v_result);
    END;
    /
                        

2. 반복문

특정 조건이 만족될 때까지 PL/SQL 코드 블록을 반복적으로 실행합니다.

2.1. LOOP 문

  • 기본 LOOP: EXIT 문이나 EXIT WHEN 문을 사용하여 명시적으로 루프를 종료해야 합니다.
    
    DECLARE
        v_counter NUMBER := 1;
    BEGIN
        LOOP
            DBMS_OUTPUT.PUT_LINE('카운터: ' || v_counter);
            v_counter := v_counter + 1;
            EXIT WHEN v_counter > 5;
        END LOOP;
    END;
    /
                        
  • WHILE LOOP: 주어진 조건이 참인 동안 루프를 반복합니다.
    
    DECLARE
        v_counter NUMBER := 1;
    BEGIN
        WHILE v_counter <= 5 LOOP
            DBMS_OUTPUT.PUT_LINE('카운터 (WHILE): ' || v_counter);
            v_counter := v_counter + 1;
        END LOOP;
    END;
    /
                        

2.2. FOR LOOP 문

  • FOR LOOP: 지정된 범위 내에서 루프를 반복하며, 루프 카운터 변수를 자동으로 관리합니다.
    
    BEGIN
        FOR i IN 1..5 LOOP
            DBMS_OUTPUT.PUT_LINE('카운터 (FOR): ' || i);
        END LOOP;
    END;
    /
                        
  • CURSOR FOR LOOP: 커서에서 반환된 각 행에 대해 루프를 반복합니다.
    
    DECLARE
        CURSOR emp_cur IS
            SELECT employee_id, first_name, last_name
            FROM employees
            WHERE department_id = 30;
    BEGIN
        FOR emp_rec IN emp_cur LOOP
            DBMS_OUTPUT.PUT_LINE(emp_rec.employee_id || ' ' || emp_rec.first_name || ' ' || emp_rec.last_name);
        END LOOP;
    END;
    /
                        

'코딩 이야기 > 오라클' 카테고리의 다른 글

오라클 문자 함수 종류 및 사용법  (0) 2025.04.01
오라클 JOIN 종류 및 사용법  (0) 2025.04.01
오라클 NULL 사용법  (0) 2025.04.01
오라클 날짜 함수  (0) 2025.04.01