오라클 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 |