[ Oracle - Procedure 문법_Cursor_For ]

 

Cursor FOR문

--장점 : open, fetch 등을 하지 않아도 됨

--단점 : ??

--질문 : 만약, 한건도 없을 경우 for loop 가 수행 되는지 궁금??

 

CREATE OR REPLACE PROCEDURE HRMS.Op_Odm_Shift_Work_Daily_Update (

    in_yyyymm                           IN  VARCHAR2,   -- 작업년월

    in_emp_id           IN  VARCHAR2,   -- 사번

    in_apply_ym_m       IN  VARCHAR2,   -- 소급계산 처리시 수정처리년월

    in_mod_emp_id                    IN  VARCHAR2,   -- 작업자사번

    out_return                            OUT VARCHAR2    -- return 변수

)

IS

    CURSOR cur1 IS

        SELECT a.apply_ymd,

              a.shift_work_cd,

              a.data_type,

              a.sta_hm, a.end_hm

         FROM  ODM_SHIFT_WORK_DAILY a,

                      ODM_SHIFT_WORK_CODE b,

                    ODM_CALENDAR c

         WHERE a.shift_work_cd = b.cd

           AND     a.apply_ymd = c.cal_ymd

           AND    b.idx_id = '1109'

           AND    a.emp_id = in_emp_id

           AND    a.apply_ymd LIKE in_yyyymm || '%' ;

 

BEGIN

   ......

FOR eItem IN  cur1  LOOP

    ..........

 

   -- 이때 eItem 변수는 정의하지 않아도 사용가능하다.

    변수1 := eItem.apply_ymd;

    변수2 := eItem.shift_work_cd;

 

     .........

END LOOP;

    .........

END;

Posted by 농부지기
,