CASE 문 Oracle 예제가 포함된 PL/SQL

CASE문이란 무엇입니까?

CASE 문은 사용 가능한 옵션의 조건에 따라 하나의 대안을 선택하는 IF-THEN-ELSIF 문과 유사합니다.

  • CASE 문은 부울 표현식 대신 "선택기"를 사용하여 시퀀스를 선택합니다.
  • CASE 문의 표현식 값은 선택자로 처리됩니다.
  • 표현식은 모든 유형(산술, 변수 등)일 수 있습니다.
  • 각 대안에는 미리 정의된 특정 값(선택자)이 할당되며, 조건식 값과 일치하는 선택기 값을 가진 대안이 실행됩니다.
  • IF-THEN-ELSIF와 달리 CASE 문은 SQL 문에서도 사용할 수 있습니다.
  • CASE 문의 ELSE 블록에는 대안이 하나도 선택되지 않았을 때 실행되어야 하는 시퀀스가 ​​포함되어 있습니다.

통사론

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 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;
/

코드 설명

  • 코드 라인 2: 변수 'a'를 'NUMBER' 데이터 유형으로 선언하고 값 '55'으로 초기화합니다.
  • 코드 라인 3: 변수 'b'를 'NUMBER' 데이터 유형으로 선언하고 값 '5'로 초기화합니다.
  • 코드 줄 4: 변수 'arth_operation'을 크기가 2인 'VARCHAR20' 데이터 유형으로 선언하고 값 'MULTIPLY'로 초기화합니다.
  • 코드 라인 6: "프로그램이 시작되었습니다"라는 문구를 인쇄합니다.
  • 코드 라인 7: CASE는 표현식의 값을 확인합니다. 이 경우, 변수 'arth_operation'의 값은 'MULTIPLY'입니다. 이 값은 이제 이 CASE 명령문에 대한 선택자로 처리됩니다.
  • 코드 줄 10: 'MULTIPLY' 값을 갖는 WHEN 절이 선택자 값과 일치하므로 컨트롤러는 이 action_block을 선택하고 '숫자의 곱은 275입니다'라는 메시지를 인쇄합니다.
  • 코드 line13: CASE 문의 끝을 표시합니다.
  • 코드 라인 14: "프로그램 완료"라는 문구를 인쇄합니다.

코드 출력

Program started.
Multiplication of the numbers are: 275
Program completed.

검색된 사례 명세서

SEARCHED CASE 문은 CASE 문과 유사하지만 선택기를 사용하여 대안을 선택하는 대신 SEARCHED CASE는 WHEN 절에 정의된 표현식을 직접 갖습니다.

  • 조건을 만족하는 첫 번째 WHEN 절이 실행되고 컨트롤러는 나머지 대안을 건너뜁니다.

통사론

CASE
WHEN <expression1> THEN action_blockl; 
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;
/

코드 설명

  • 코드 라인 2: 변수 'a'를 'NUMBER' 데이터 유형으로 선언하고 값 '55'으로 초기화합니다.
  • 코드 라인 3: 변수 'b'를 'NUMBER' 데이터 유형으로 선언하고 값 '5'로 초기화합니다.
  • 코드 줄 4: 변수 'arth_operation'을 크기 2의 'VARCHAR20' 데이터 유형으로 선언하고 값 'DIVIDE'로 초기화합니다.
  • 코드 라인 6: "프로그램이 시작되었습니다"라는 문구를 인쇄합니다.
  • 코드 라인 7: SEARCHED CASE 문이 시작됩니다. 라인 8에서 라인 13까지의 코드는 선택자 값(ADD, SUBTRACT, MULTIPLY)이 'arth_operation' 값과 일치하지 않으므로 건너뜁니다.
  • 코드 줄 14: WHEN 절 표현식 "arth_operation = 'DIVIDE'"가 충족되고 표현식은 TRUE를 반환합니다.
  • 코드 줄 15: WHEN 절의 Action_block이 실행되고 '숫자 나누기는 11입니다'라는 메시지가 출력됩니다.
  • 코드 라인 17: CASE 문의 끝을 표시합니다.
  • 코드 라인 18: "프로그램 완료"라는 문구를 인쇄합니다.

코드 출력

Program started.
Division of the numbers are: 11
Program completed.

요약

TYPE 기술 사용법
CASE 유사하게 IF-THEN-ELSIF 성명. 부울 표현식 대신 'SELECTOR'를 사용하여 대안을 선택합니다. 'SELECTOR'를 사용하여 여러 대안 중에서 선택하는 데 사용됩니다.
검색된 사례 실제 'SELECTOR'가 없는 CASE 문입니다. 대신 대안을 선택하는 실제 조건(TRUE/FALSE로 평가됨)이 포함됩니다. 주로 두 개 이상의 대안 중에서 선택하는 데 사용됩니다.