[ Oracle - Procedure 문법_CASE문 ]
CASE의 유형
- CASE 수식은 다음과 같이 사용할 수 있습니다.
. 임의의 SQL 수식과 유사한 방법으로 쓰입니다.
. 대입문의 변수로서, 그리고 SQL 문 또는 논리 연산의 일부로서 사용할 수 있습니다.
. 키워드 CASE로 시작하여 END로 끝이 납니다.
- CASE 문은 다음과 같이 사용할 수 있습니다.
. IF…THEN…ELSE 구문과 유사하게 독립적인 문장으로 쓸 수 있습니다.
. 키워드 CASE로 시작하여 END CASE로 끝이 납니다.
- 단순 CASE :
. 단일의 변수/수식에 대하여 복수의 값에 대해 적용됩니다.
. WHEN 절 내에 비교 연산자를 쓸 수 없습니다.
- 검색 CASE :
. 보다 유연하게 쓸 수 있습니다.
. 각각의 WHEN 절은
o 필요하다면 서로 다른 변수들을 사용할 수 있습니다.
o 비교 연산자를 쓸 수도 있습니다.
예: 단순 CASE 수식)
CREATE OR REPLACE FUNCTION get_comm (p_comm NUMBER)
RETURN VARCHAR2 IS
v_comm VARCHAR2(10);
BEGIN
v_comm := CASE p_comm
WHEN .15 THEN 'fifteen percent'
WHEN .2 THEN 'twenty percent'
ELSE 'thirty percent'
END;
RETURN v_comm;
END;
예: 단순 CASE 문)
CREATE OR REPLACE FUNCTION get_comm (p_comm NUMBER)
RETURN VARCHAR2 IS
v_comm VARCHAR2(10);
BEGIN
CASE p_comm
WHEN .15 THEN
v_comm := 'fifteen percent';
WHEN .2 THEN
v_comm := 'twenty percent';
ELSE
v_comm := 'thirty percent';
END CASE;
RETURN v_comm;
END;
예: 검색 CASE 수식)
CREATE OR REPLACE FUNCTION get_sal_grade (p_sal NUMBER)
RETURN VARCHAR2 IS
v_grade VARCHAR2(25);
BEGIN
v_grade := CASE
WHEN p_sal < 10000 THEN
'salary is low'
WHEN p_sal BETWEEN 10000 AND 50000 THEN
'salary is average'
ELSE
'salary is high'
END;
RETURN v_grade;
END;
예: 검색 CASE 문)
CREATE OR REPLACE FUNCTION get_raise (p_sal NUMBER)
RETURN VARCHAR2 is
v_raise VARCHAR2(10);
BEGIN
CASE
WHEN p_sal < 10000 THEN
v_raise :='raise is 10%';
WHEN p_sal >= 10000 THEN
v_raise := 'raise is 15%';
END CASE;
RETURN v_raise;
END;
'(DB) Oracle > PL.SQL' 카테고리의 다른 글
Oracle - Procedure 문법_IF문 (0) | 2017.01.21 |
---|---|
Oracle - Procedure 문법_FOR_LOOP문 (0) | 2017.01.21 |
Oracle - Procedure 문법_선언문(Declare) (0) | 2017.01.21 |
Oracle - Procedure를 바로 실행하기 (0) | 2017.01.21 |
Oracle - PROCEDURE 개념 (0) | 2017.01.21 |