CASE 문 Oracle 예제가 포함된 PL/SQL
⚡ 스마트 요약
PL/SQL CASE 문은 IF-THEN-ELSIF 문과 유사하지만 더 명확하게, 선택자에 따라 여러 대안 중에서 하나를 선택합니다. 단순 CASE 문은 선택자 값과 일치하는지 여부를 확인하는 반면, 검색 CASE 문은 각 WHEN 절의 조건을 평가하고 참인 첫 번째 조건을 실행합니다.

CASE 문항이란 무엇인가요?
CASE 문은 IF-THEN-ELSIF 문과 유사하며, 주어진 조건에 따라 사용 가능한 옵션 중에서 하나의 대안을 선택합니다.
- CASE 문은 부울 표현식 대신 "선택자"를 사용하여 순서를 선택합니다.
- CASE 문에 있는 표현식의 값은 선택자로 처리됩니다.
- 해당 표현식은 어떤 유형이든 될 수 있습니다(산술 연산, 변수 등).
- 각 대안에는 미리 정의된 특정 값(선택자)이 할당되며, 선택자 값이 조건식 값과 일치하는 대안이 실행됩니다.
- IF-THEN-ELSIF와 달리 CASE 문은 SQL 문에서도 사용할 수 있습니다.
- CASE 문의 ELSE 블록은 어떤 대안도 선택되지 않았을 때 실행될 순서를 담고 있습니다.
통사론
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- 위 구문에서 표현식은 어떤 유형이든 될 수 있는 값을 반환합니다.
- 각 'WHEN' 절은 대안을 나타냅니다. 그리고 .
- 표현식과 값이 일치하는 'WHEN' 절이 선택되고, 그 절의 값이 결정됩니다. 실행됩니다.
- 'ELSE' 블록은 선택 사항이며 다음 내용을 포함합니다. 다른 대안이 없을 때 실행합니다.
- 'END'는 CASE 문단의 끝을 나타내며 CASE 문단에서 필수적인 부분입니다.
예제 1: CASE를 사용한 산술 계산
이 예시에서는 두 숫자 55와 5 사이의 산술 계산을 수행합니다.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'MULTIPLY'; BEGIN dbms_output.put_line('Program started.'); CASE (arth_operation) WHEN 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '|| a+b ); WHEN 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '||a-b ); WHEN 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are:'|| a/b); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code 설명
- Code 2행: 변수 'a'를 'NUMBER'로 선언하고 '55'라는 값으로 초기화합니다.
- Code 3행: 변수 'b'를 'NUMBER'로 선언하고 '5'라는 값으로 초기화합니다.
- Code 4행: 'arth_operation' 변수를 크기 20의 'VARCHAR2'로 선언하고 'MULTIPLY' 값으로 초기화합니다.
- Code 6번째 줄: "프로그램이 시작되었습니다"라는 메시지를 출력합니다.
- Code 7번째 줄: CASE 절은 표현식의 값을 확인합니다. 여기서 'arth_operation'의 값은 'MULTIPLY'이며, 이는 선택자로 처리됩니다.
- Code 10번째 줄: 'MULTIPLY' 값을 가진 WHEN 절이 선택자와 일치하므로 컨트롤러는 이 액션 블록을 선택하고 '숫자의 곱셈 결과는: 275'를 출력합니다.
- Code 13번째 줄: CASE 문의 끝을 나타냅니다.
- Code 14번째 줄: "프로그램이 완료되었습니다"라는 메시지를 출력합니다.
Code 산출
Program started. Multiplication of the numbers are: 275 Program completed.
검색된 사례 명세서
검색된 CASE 문은 CASE 문과 유사하지만, 선택자를 사용하여 대안을 선택하는 대신 WHEN 절에 조건을 직접 정의합니다.
- 조건을 만족하는 첫 번째 WHEN 절이 실행되고, 컨트롤러는 나머지 대안들을 건너뜁니다.
통사론
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- 위 구문에서 각 WHEN 절은 별도의 값을 가집니다. 그리고 .
- 표현식이 TRUE를 반환하는 WHEN 절이 실행됩니다.
- 'ELSE' 블록은 선택 사항이며 다음 내용을 포함합니다. 위의 대안 중 어느 것도 충족되지 않을 때 실행합니다.
- 'END'는 CASE 문단의 끝을 나타내며 CASE 문단에서 필수적인 부분입니다.
예제 1: 검색된 CASE를 사용한 산술 계산
이 예시에서는 두 숫자 55와 5 사이의 산술 계산을 수행합니다.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'DIVIDE'; BEGIN dbms_output.put_line('Program started.'); CASE WHEN arth_operation = 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '||a+b ); WHEN arth_operation = 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '|| a-b); WHEN arth_operation = 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN arth_operation = 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are: '|| a/b ); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code 설명
- Code 2행: 변수 'a'를 'NUMBER'로 선언하고 '55'라는 값으로 초기화합니다.
- Code 3행: 변수 'b'를 'NUMBER'로 선언하고 '5'라는 값으로 초기화합니다.
- Code 4행: 'arth_operation' 변수를 크기 20의 'VARCHAR2'로 선언하고 'DIVIDE' 값으로 초기화합니다.
- Code 6번째 줄: "프로그램이 시작되었습니다"라는 메시지를 출력합니다.
- Code 7번째 줄: 검색된 CASE 문이 시작됩니다. ADD, SUB 절TRACT와 MULTIPLY는 'arth_operation' 값과 조건이 일치하지 않으므로 건너뜁니다.
- Code 14행: WHEN 절 표현식 "arth_operation = 'DIVIDE'"가 충족되어 TRUE를 반환합니다.
- Code 15번째 줄: WHEN 절의 액션 블록이 실행되고 '숫자 나누기는 11입니다'가 출력됩니다.
- Code 17번째 줄: CASE 문의 끝을 나타냅니다.
- Code 18번째 줄: "프로그램이 완료되었습니다"라는 메시지를 출력합니다.
Code 산출
Program started. Division of the numbers are: 11 Program completed.
사건과 검색된 사건 비교
두 방식 모두 하나의 분기를 선택하지만, 분기를 선택하는 방식에 차이가 있으며, 그 내용은 아래에 요약되어 있습니다.
| 타입 | 기술설명 | 용법 |
|---|---|---|
| CASE | 받는 유사 IF-THEN-ELSIF 문장입니다. '선택자'는 부울 표현식 대신 대안을 선택하는 데 사용됩니다. | 선택기를 사용하여 여러 대안 중에서 하나를 선택하는 데 사용됩니다. |
| 검색된 사례 | 실제 선택자가 없는 CASE 문입니다. 대신, 대안을 선택하는 조건(TRUE 또는 FALSE로 평가됨)이 포함되어 있습니다. | 주로 범위 조건 하에서 두 개 이상의 대안 중에서 선택하는 데 사용되었습니다. |
