[ 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;

 

 

 

Posted by 농부지기
,