[ Oracle - Procedure 문법_IF문 ]

 

1. 기본 문법

2. if문에 in 사용법

3. if문에 exists 사용법

4. if문에 between 사용법

1.문법 (기본식)

    IF condition THEN

        statement;

   [ELSIF condition THEN

        statement;]

   [ELSE

       statement;]

    END IF;

2. 문법(in)

     If 문의 비교 부분에 IN 을 넣을 수 있음

     예]

     if   (x_bill_gubun2   IN   (1,2,3,6)) then x_sum:=x_sum+x_bill_amt;

3. 문법(Exists)

    if exists(select * from inserted where J_NAME='ABC') begin

         ....

    end

    * count 를 할 필요 없이.. 그냥 * 로 하면 됨..

4. IF 문을 from ~ to 로 하는 경우

    IF iRtnMonth between 1 and 11 THEN

       .....

    END IF

 

 

 

Posted by 농부지기
,

[ Oracle - Procedure 문법_FOR_LOOP문 ]

 

1.문법

    FOR index in [REVERSE] lower_bound..upper_bound LOOP

          statement;

    END LOOP;

2.예제

  ex) 우선 set serveroutput on을 한다.

       CREATE OR REPLACE PROCEDURE iterate

          (v_lower NUMBER,    v_upper NUMBER)

       IS

           v_counter NUMBER(10) := 0;

           v_output NUMBER(10);

       BEGIN

           FOR i IN v_lower..v_upper LOOP

                  v_counter := v_counter + 1;

                  v_output := i;

           END LOOP;

 

           DBMS_OUTPUT.PUT_LINE('Last value is '||TO_CHAR(v_output)  ||'. Total loops = '||TO_CHAR(v_counter));

      END iterate;

3. 예제 2

    설명 : - 1~150까지 1씩 증가 하면서 LOOP를 돈다.

    문법 :

          FOR nLoop IN 1..150 LOOP

                 ............

          END LOOP;

 

 

Posted by 농부지기
,

[ 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 농부지기
,