상세 컨텐츠

본문 제목

오라클 커서 테이블 사용하기 예제

데이터베이스

by 김일국 2011. 2. 11. 22:21

본문

 PROCEDURE SP_DISTANCE_POINT(
  P_YEAR_TERM IN VARCHAR2
 ,P_TERM  IN VARCHAR2
 ,P_YEARLY_TRACK  IN VARCHAR2
 )
 IS
 
   CURSOR CHOICE_CUR IS
    SELECT A.RESISTRATION_NO, SUBSTR(B.ZIPCODE,1,3) ZIPCODE, C.COLUMNB
    FROM   DORM.T_DORM_ENTER_SUBMIT  A 
        INNER JOIN DORM.T_ADDRESS_BOOK B ON A.RESISTRATION_NO     = B.RESISTRATION_NO
        INNER JOIN DORM.T_CODE_MASTER C ON SUBSTR(B.ZIPCODE,1,3)   = C.CODE_DETAIL
    WHERE  A.YEAR_TERM = P_YEAR_TERM
    AND    A.TERM  = P_TERM
    AND    A.JOB_END = 'N'
    AND    A.REG_STATUS = '7' 
    AND    B.ADDRESS_TYPE = '현재' 
    AND    A.YEARLY_TRACK = NVL(P_YEARLY_TRACK,'N')
    FOR UPDATE OF DISTANCE_POINT NOWAIT;
      
  V_CHOICE_CUR   CHOICE_CUR%ROWTYPE;
 
 BEGIN
 
  OPEN CHOICE_CUR;  
 
  LOOP
   FETCH CHOICE_CUR INTO V_CHOICE_CUR;
   
   EXIT WHEN CHOICE_CUR%NOTFOUND;      
 
   UPDATE T_DORM_ENTER_SUBMIT SET DISTANCE_POINT = TO_NUMBER(V_CHOICE_CUR.COLUMNB)
    WHERE  YEAR_TERM = vYEAR_TERM
    AND    TERM  = vTERM
    AND    RESISTRATION_NO = V_CHOICE_CUR.RESISTRATION_NO;
 
  END LOOP;   
 
  COMMIT;
  
  CLOSE CHOICE_CUR;
  
    EXCEPTION
       WHEN NO_DATA_FOUND
       THEN
          NULL;
       WHEN OTHERS
       THEN
          RAISE;  
 END SP_DISTANCE_POINT;   

관련글 더보기

댓글 영역