P/L sql 질문입니다. 0 2 998

by coffee [2012.10.30 16:02:05]




<procedure id="saveTerminal" parameterClass="map">
/*해지접수 처리*/
  DECLARE
    REC pkg_cm_wo.cancel_type;
    v_order_id TCMCT_OCTRT_INFO.ORDER_ID%TYPE;
    v_basic_prod_cd TCMCT_OCTRT_INFO.basic_prod_cd%TYPE;
    V_MSGCODE VARCHAR2(100);
    V_MESSAGE VARCHAR2(100);
  BEGIN
    rec.ctrt_id := #CTRT_ID#;
    rec.cust_id    := #CUST_ID#;
    rec.def_resn_cd    := #DEF_RESN_CD#;
    rec.rmrk_desc   := #MEMO#;

    rec.rcpt_id     := #RCPT_ID#;
    rec.term_hope_dt  := #WRK_HOPE_DTTM#;
    rec.instl_agnt     := #INSTL_AGNT#;
    rec.so_id   := #SO_ID#;
    rec.atrt_crr_id    := #ATRT_CRR_ID#;
    rec.atrt_emp_id := #ATRT_EMP_ID#;
    rec.regr_id     := #ATRT_ID#;

/*PCMCT_TERMINATE(rec, v_msgcode, v_message);*/
/*PCMCT_V10_TERMINATE(REC, v_MSGCODE, v_MESSAGE);   //해지가 된다.*/
PCMCT_V20_SET_UP_PROCESS_WT_R(#CTRT_ID#, #REGR_ID#, #ORDER_TP#,
#DEF_RESN_CD#, #WRK_HOPE_DTTM#, NULL,  v_order_id, #RCPT_ID#, #MEMO#,
V_MSGCODE,  V_MESSAGE);

SELECT BASIC_PROD_CD
  INTO v_basic_prod_cd
  FROM TCMCT_OCTRT_INFO
 WHERE ORDER_ID = v_order_id;

PCMCO_SEQ_RETURN_PARAM( v_order_id, #NEW_ORDER_ID, jdbcType=VARCHAR, mode=INPUT#);
PCMCO_SEQ_RETURN_PARAM(  v_basic_prod_cd, #NEW_PROD_CD, jdbcType=VARCHAR,mode=INPUT#);

PCMCO_RETURN_PARAM(V_MSGCODE, #MSGCODE, jdbcType=VARCHAR, mode=INPUT#);
PCMCO_RETURN_PARAM(V_MESSAGE, #MESSAGE, jdbcType=VARCHAR, mode=INPUT#);

END;
</procedure>


안녕하세요... 일단
 REC pkg_cm_wo.cancel_type;
이부분이 멀 말하는지 모르겠어요..
그리고 선언부 변수랑 밑에 실행부쪽 변수들이 있는데..
선언한 변수는 왜 선언을 해 줬는지 모르겠구요..
## 이 것을 쓴게 있고 안쓴게 있는데... 차이점을 모르겠습니다.
설명 부탁드리겠습니다.

by 마농 [2012.10.30 16:32:45]

1. REC pkg_cm_wo.cancel_type; 이부분이 멀 말하는지 모르겠어요..
 - V_MSGCODE VARCHAR2(100); 이건 어떤 문장인지 알고 계시죠?
 - V_MSGCODE 라는 변수를 선언하는데 변수타입이 VARCHAR2(100) 이라는 거죠.
 - REC pkg_cm_wo.cancel_type; 이것도 마찬가지 입니다.
 - REC 라는 변수를 pkg_cm_wo.cancel_type 라는 타입으로 선언한 것입니다.
 - 그럼 pkg_cm_wo.cancel_type 는 무었이냐?
 - pkg_cm_wo 라는 패키지 안에 cancel_type 라는 타입이 별도로 선언되어 있을 것입니다.
 - 구조체나 배열변수, 테이블형태 비슷한거겠죠...
 - pkg_cm_wo 를 열어서 확인해 보세요.


2. 선언한 변수는 왜 선언을 해 줬는지 모르겠구요..
 - 실행부에서 사용하려고 선언했겠죠.
 - rec 사용되었구요... rec.ctrt_id := #CTRT_ID#;
 - v_order_id 는 프로시져(pcmct_v20_set_up_process_wt_r) 호출시 사용되었네요.
 - 아마도 호출된 프로시져에서 v_order_id 에 값을 넘겨줄 것입니다.
 - v_msgcode,  v_message 도 마찬가지로 프로시져 호출시 사용.
 - v_basic_prod_cd 는 Select Into 절에서 사용.


3. ## 이 것을 쓴게 있고 안쓴게 있는데... 차이점을 모르겠습니다.
 - 사용하시는 언어나 3Tier 제품에서 바인드변수 역할을 할 것입니다.
 - {procedure} 와 {/procedure} 으로 둘러싸인 블럭의 밖에서 선언된 변수입니다.


by coffee [2012.10.30 19:53:48]
네.. 도움주셔서 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입