상세 컨텐츠

본문 제목

ORALCE의 Tytpe Obect 사용 편의

프로그래밍/DB

by 라제폰 2010. 5. 20. 10:29

본문

Oracle Type을 이용해 Procedure 처리 결과를 Record 형태로 Return하는 방법을 찾은 이후, 많이 애용( ? ) 해 왔는데요…

 

그간 이놈이 조금 불편했던 점 중 1가지 가 있었습니다.

 

불편했던 점: Type을 쓸려면, 다음과 같이 초기화를 합니다.

)           m_tbl_pricemgr_info.extend;

                 m_tbl_pricemgr_info(1) := ty_pricemgr_info(null,null,null,null);  -- type에 속성이 4개 인 경우

 

그 이후, Type에 속성을 추가 하여 Compile 하면, 기존에 Type을 초기화 했던 부분을 찾아 모두 다음과 같이 수정 해 줘야 했었습니다.

)           m_tbl_pricemgr_info.extend;

                 m_tbl_pricemgr_info(1) := ty_pricemgr_info(null,null,null,null,null);  -- type에 속성이 4개 에 1개 추가 한 경우

 

 

해당 Type을 쓴 Procedure 5개 이면, 5개 모두 Complile 에러가 발생 하며해당 부분을 모두 고쳐 줘야 정상적으로 compile 됬었습니다,

 

이제 Type에 다음과 같이 Constructor Method를 추가 함으로써, 문제를 해 결 할 수 있습니다.

 

CREATE OR REPLACE TYPE TY_PRICEMGR_INFO  AS OBJECT

(

     GOODS_NO NUMBER,

     RSRV_RT NUMBER,   --적립율

     rsrv_amt NUMBER, --적립금

 

    ngs_yn VARCHAR2(1), --신상품여부

    pr_txt_nm VARCHAR2(100),

 

    constructor function TY_PRICEMGR_INFO(GOODS_NO number)

    return self as result   

);

 

create or replace type body TY_PRICEMGR_INFO is

 

  CONSTRUCTOR FUNCTION TY_PRICEMGR_INFO(GOODS_NO number) RETURN SELF AS RESULT

  AS

  BEGIN

        SELF.GOODS_NO := GOODS_NO;

        return;

  END;

 

end;

 

이렇게 Type의 헤더와 Body를 생성 하면,, 이후 부터는

 

)           m_tbl_pricemgr_info.extend;

                 m_tbl_pricemgr_info(1) := ty_pricemgr_info(null);  -- type에 속성이 추가 되어도 계속 정상적으로 compile

 

 

많은 도움이 되리라 확신합니다.

 

이상입니다….


관련글 더보기