PL/SQL 조건 제어문과 반복 제어문 완벽 가이드
PL/SQL에서는 특정 조건에 따라 실행할 내용을 달리하는 조건 제어문과 반복적으로 특정 작업을 수행하는 반복 제어문을 제공합니다. 이번 포스팅에서는 IF 문, CASE 문, 그리고 다양한 반복문을 활용하는 방법에 대해 자세히 알아보겠습니다.
1. 조건 제어문
IF 조건문
IF 조건문은 특정 조건을 만족하면 지정된 작업을 수행합니다. 기본 형식은 아래와 같습니다:
IF 조건식 THEN
수행할 명령어;
END IF;
예제: 변수에 입력된 값이 홀수인지 알아보기 (입력 값이 홀수일 때)
DECLARE
V_NUMBER NUMBER := 13;
BEGIN
IF MOD(V_NUMBER, 2) = 1 THEN
DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
END IF;
END;
/
예제: 변수에 입력된 값이 홀수인지 알아보기 (입력 값이 짝수일 때)
DECLARE
V_NUMBER NUMBER := 14;
BEGIN
IF MOD(V_NUMBER, 2) = 1 THEN
DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
END IF;
END;
/
IF-THEN-ELSE 조건문
IF-THEN-ELSE 조건문은 특정 조건을 만족하는 경우와 그렇지 않은 경우 각각의 작업을 수행합니다.
IF 조건식 THEN
수행할 명령어;
ELSE
수행할 명령어;
END IF;
예제: 변수에 입력된 값이 홀수인지 짝수인지 알아보기 (입력 값이 짝수일 때)
DECLARE
V_NUMBER NUMBER := 14;
BEGIN
IF MOD(V_NUMBER, 2) = 1 THEN
DBMS_OUTPUT.PUT_LINE('V_NUMBER는 홀수입니다!');
ELSE
DBMS_OUTPUT.PUT_LINE('V_NUMBER는 짝수입니다!');
END IF;
END;
/
IF-THEN-ELSIF 조건문
여러 조건에 따라 각각의 작업을 수행할 수 있습니다.
IF 조건식 THEN
수행할 명령어;
ELSIF 조건식 THEN
수행할 명령어;
...
ELSE
수행할 명령어;
END IF;
예제: 입력한 점수가 어느 학점인지 출력하기
DECLARE
V_SCORE NUMBER := 87;
BEGIN
IF V_SCORE >= 90 THEN
DBMS_OUTPUT.PUT_LINE('A학점');
ELSIF V_SCORE >= 80 THEN
DBMS_OUTPUT.PUT_LINE('B학점');
ELSIF V_SCORE >= 70 THEN
DBMS_OUTPUT.PUT_LINE('C학점');
ELSIF V_SCORE >= 60 THEN
DBMS_OUTPUT.PUT_LINE('D학점');
ELSE
DBMS_OUTPUT.PUT_LINE('F학점');
END IF;
END;
/
CASE 조건문
CASE 조건문은 조건식의 결과 값에 따라 여러 가지 수행 작업을 지정할 수 있습니다.
단순 CASE문
CASE 비교 기준
WHEN 값1 THEN
수행할 명령어;
WHEN 값2 THEN
수행할 명령어;
...
ELSE
수행할 명령어;
END CASE;
예제: 입력 점수에 따른 학점 출력하기
DECLARE
V_SCORE NUMBER := 87;
BEGIN
CASE TRUNC(V_SCORE/10)
WHEN 10 THEN DBMS_OUTPUT.PUT_LINE('A학점');
WHEN 9 THEN DBMS_OUTPUT.PUT_LINE('A학점');
WHEN 8 THEN DBMS_OUTPUT.PUT_LINE('B학점');
WHEN 7 THEN DBMS_OUTPUT.PUT_LINE('C학점');
WHEN 6 THEN DBMS_OUTPUT.PUT_LINE('D학점');
ELSE DBMS_OUTPUT.PUT_LINE('F학점');
END CASE;
END;
/
검색 CASE문
CASE
WHEN 조건식1 THEN
수행할 명령어;
WHEN 조건식2 THEN
수행할 명령어;
...
ELSE
수행할 명령어;
END CASE;
예제: 입력 점수에 따른 학점 출력하기
DECLARE
V_SCORE NUMBER := 87;
BEGIN
CASE
WHEN V_SCORE >= 90 THEN DBMS_OUTPUT.PUT_LINE('A학점');
WHEN V_SCORE >= 80 THEN DBMS_OUTPUT.PUT_LINE('B학점');
WHEN V_SCORE >= 70 THEN DBMS_OUTPUT.PUT_LINE('C학점');
WHEN V_SCORE >= 60 THEN DBMS_OUTPUT.PUT_LINE('D학점');
ELSE DBMS_OUTPUT.PUT_LINE('F학점');
END CASE;
END;
/
2. 반복 제어문
PL/SQL에서는 다음 네 가지 반복문을 제공합니다: 기본 LOOP, WHILE LOOP, FOR LOOP, Cursor FOR LOOP.
기본 LOOP
기본 반복문은 아래와 같은 형식으로 작성합니다:
LOOP
반복 수행작업;
END LOOP;
예제: 기본 LOOP 사용하기
DECLARE
V_NUM NUMBER := 0;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('현재 V_NUM : ' || V_NUM);
V_NUM := V_NUM + 1;
EXIT WHEN V_NUM > 4;
END LOOP;
END;
/
WHILE LOOP
WHILE LOOP문은 조건식의 결과가 true일 때 반복을 수행합니다.
WHILE 조건식 LOOP
반복 수행 작업;
END LOOP;
예제: WHILE LOOP 사용하기
DECLARE
V_NUM NUMBER := 0;
BEGIN
WHILE V_NUM < 4 LOOP
DBMS_OUTPUT.PUT_LINE('현재 V_NUM : ' || V_NUM);
V_NUM := V_NUM + 1;
END LOOP;
END;
/
FOR LOOP
FOR LOOP문은 반복 횟수를 지정할 수 있습니다.
FOR i IN 시작 값 .. 종료 값 LOOP
반복 수행 작업;
END LOOP;
예제: FOR LOOP 사용하기
BEGIN
FOR i IN 0..4 LOOP
DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
END LOOP;
END;
/
REVERSE 키워드 사용하기
FOR i IN REVERSE 시작 값 .. 종료 값 LOOP
반복 수행 작업;
END LOOP;
예제: FOR LOOP 사용하기 (역순)
BEGIN
FOR i IN REVERSE 0..4 LOOP
DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
END LOOP;
END;
/
CONTINUE문, CONTINUE-WHEN문
FOR LOOP 안에 CONTINUE문을 사용할 수 있습니다.
BEGIN
FOR i IN 0..4 LOOP
CONTINUE WHEN MOD(i, 2) = 1;
DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i);
END LOOP;
END;
/
이번 포스팅에서는 PL/SQL에서 조건 제어문과 반복 제어문을 사용하는 다양한 방법에 대해 알아보았습니다. 각 문법을 활용하여 더욱 효율적인 PL/SQL 코드를 작성해보세요!
'Be Smart > SQL' 카테고리의 다른 글
[오라클] 저장 프로시저(Stored Procedure) 사용 가이드 (0) | 2024.07.01 |
---|---|
[오라클] PL/SQL 저장 서브 프로그램: 효율적인 데이터베이스 관리의 핵심 (0) | 2024.07.01 |
[Oracle] 오라클 PL/SQL 구조 (0) | 2024.06.18 |
오라클 PL/SQL 예외 처리: 오류 발생 시 프로그램 비정상 종료 방지 방법 (1) | 2024.06.13 |
[Oracle] HackerRank 문제 정리 - 6 (0) | 2022.08.10 |
댓글