(파일명 20231102_02_scott)
■ IF문
- IF ~ THEN ~ ELSE ~ END IF;
- 다른 언어의 IF 조건문과 거의 유사함
- 조건이 TRUE이면 THEN과 ELSE 사이의 문장을 수행하고
- FALSE이면 NULL 이나 ELSE 와 END IF; 사이 문장을 수행한다!
■ 형식 및 구조
/*
IF 조건
THEN 처리문;
END IF;
*/
/*
IF 조건
THEN 처리문;
ELSE
처리문;
END IF;
*/
/*
IF 조건
THEN 처리문;
ELSIF 조건
THEN 처리문;
ELSIF 조건
THEN 처리문;
ELSE
처리문;
END IF;
*/
→ IF 중첩 시, ELSE IF 가 아닌 ELSIF 로 써야함! 확인!!
■ IF문 실습
- DECLARE 에서 변수 선언 할 때, CHAR 길이 명시하지 않으면 최소값, NUMBER 길이 명시하지 않으면 최대값
--○ 변수에 임의의 값을 대입하고 출력하는 구문 작성
DECLARE
GRADE CHAR; -- CHAR의 길이 명시하지 않으면 최소값을 가짐 단, NUMBER는 길이 명시하지 않는 경우 최대값을 가짐
BEGIN
GRADE := 'B';
--DBMS_OUTPUT.PUT_LINE(GRADE);
IF GRADE = 'A'
THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT');
ELSE
DBMS_OUTPUT.PUT_LINE('FAIL');
END IF;
END;
--==>>
/*
FAIL
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
DECLARE
GRADE CHAR;
BEGIN
GRADE := 'B';
--DBMS_OUTPUT.PUT_LINE(GRADE);
IF GRADE = 'A'
THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT');
ELSIF GRADE = 'B'
THEN DBMS_OUTPUT.PUT_LINE('BEST');
ELSE
DBMS_OUTPUT.PUT_LINE('FAIL');
END IF;
END;
--==>>
/*
BEST
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
DECLARE
GRADE CHAR;
BEGIN
GRADE := 'B';
--DBMS_OUTPUT.PUT_LINE(GRADE);
IF GRADE = 'A'
THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT');
ELSIF GRADE = 'B'
THEN DBMS_OUTPUT.PUT_LINE('BEST');
ELSIF GRADE = 'C'
THEN DBMS_OUTPUT.PUT_LINE('GOOD');
ELSE
DBMS_OUTPUT.PUT_LINE('FAIL');
END IF;
END;
--==>>
/*
BEST
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
DECLARE
GRADE CHAR;
BEGIN
GRADE := 'B';
--DBMS_OUTPUT.PUT_LINE(GRADE);
IF GRADE = 'A'
THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT');
ELSIF GRADE = 'B'
THEN DBMS_OUTPUT.PUT_LINE('BEST');
ELSIF GRADE = 'B'
THEN DBMS_OUTPUT.PUT_LINE('GOOD');
ELSE
DBMS_OUTPUT.PUT_LINE('FAIL');
END IF;
END;
--==>>
/*
BEST
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
■ CASE문
- CASE ~ WHEN ~ THEN ~ ELSE ~ END CASE;
■ 형식 및 구조
/*
CASE 변수
WHEN 값1 THEN 실행문;
WHEN 값2 THEN 실행문;
ELSE 실행문;
END CASE;
*/
■ CASE문 실습
ACCEPT NUM PROMPT '남자1 여자2 입력하세요';
DECLARE
-- 선언부
-- (주요 변수 선언)
SEL NUMBER := #
RESULT VARCHAR2(20) := '확인불가';
BEGIN
-- 실행부
-- (테스트)
--DBMS_OUTPUT.PUT_LINE('SEL : ' || SEL);
-- System.out.println("sel : " + sel)
--DBMS_OUTPUT.PUT_LINE('RESULT : ' || RESULT);
-- (연산 및 처리)
/*
CASE SEL
WHEN 1
THEN DBMS_OUTPUT.PUT_LINE('남자입니다.');
WHEN 2
THEN DBMS_OUTPUT.PUT_LINE('여자입니다.');
ELSE
DBMS_OUTPUT.PUT_LINE('확인불가');
END CASE;
*/
CASE SEL
WHEN 1 THEN RESULT := '남자';
WHEN 2 THEN RESULT := '여자';
ELSE RESULT := '확인불가';
END CASE;
-- (결과 출력)
DBMS_OUTPUT.PUT_LINE('처리 결과는' || RESULT || '입니다');
END;
--==>>
/*
여자입니다.
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
/*
처리 결과는남자입니다
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/