안녕하세요, ,오라클 프로시져 질문드리겠습니다,, 초보라 형편없이 책보면서 하고있는데요,
일단 프로시져가
IF mDetailInsertCnt > 0
THEN
nEcoSeq := nEcoSeq + 1;
BEGIN
DBMS_OUTPUT.PUT_LINE('신규/변경 AGILE_BOM_H BOM 생성 정보 START : ' || mF_ECO_ID ( nMainLoopIdx )||'-'||sF_ITEM ( nSubIdx ));
INSERT INTO AGILE_BOM_H@GLONET
(
ECO_NO
,MATNR_TOP
,ECO_SEQ
,IF_TYPE
,ECO_SDATE
,ECO_STIME
,ECO_EDATE
,ECO_ETIME
,TEXT1
,TEXT2
,TEXT3
,TEXT4
,TEXT5
,END_MARK
,PLM_SEND_DATE
,PLM_SEND_TIME
,SAP_RCV_DATE
,SAP_RCV_TIME
,SAP_RCV_FLAG
,MODIFYDATE
,APPR_DATE
) VALUES
(
mF_ECO_NO ( nMainLoopIdx ) -- ECO_ID
,SUBSTR(sF_ITEM ( nSubIdx ) ,1,20) -- MATNR
,TO_CHAR(LPAD(nEcoSeq,2,0)) -- ECO_SEQ
,sF_IF_TYPE ( nSubIdx ) -- IF_TYPE
,mF_ECO_SDATE ( nMainLoopIdx ) -- ECO_SDATE
,mF_ECO_STIME ( nMainLoopIdx ) -- ECO_STIME
,mF_ECO_EDATE ( nMainLoopIdx ) -- ECO_EDATE
,mF_ECO_ETIME ( nMainLoopIdx ) -- ECO_ETIME
,mF_ECO_EMAIL ( nMainLoopIdx ) -- TEXT1
,mF_ECO_USER ( nMainLoopIdx ) -- TEXT2
,'' -- TEXT3
,'' -- TEXT4
,'' -- TEXT5
,'E' -- END_MARK
,TO_CHAR(SYSDATE,'YYYYMMDD') -- PLM_SEND_DATE
,TO_CHAR(SYSDATE,'HH24MISS') -- PLM_SEND_TIME
,'' -- SAP_RCV_DATE
,'' -- SAP_RCV_TIME
,'N' -- SAP_RCV_FLAG
,mF_MODIFYDATE ( nMainLoopIdx )
,mF_ECO_USEDATE ( nMainLoopIdx ) /* 여기 부분을 mF_ECO_EDATE 로 변경 */
);
DBMS_OUTPUT.PUT_LINE('AGILE_BOM_H@GLONET BOM 생성 정보 INSERT : ' || TO_CHAR(SQLCODE)||'-'||sql%rowcount||'건' );
END;
END IF;
END LOOP;
END LOOP;
이부분은 bom 의 헤더부분을 셀렉트해서 디비에 저장하는 부분인데요,,,, 여기서 만약에 저위의 붉은 부분 mF_ECO_USEDATE 이 mF_ECO_USEDATE 보다 크면 정상적으로 저 쿼리를 하고
mF_ECO_USEDATE < mF_ECO_USEDATE 경우는 저위의 파랑 주석 부분 처럼
,mF_ECO_USEDATE ( nMainLoopIdx ) 부분을 mF_ECO_EDATE 로 변경해서 인서트 하고 싶습니다,,
그래서 제가 생각한 방법이
IF mDetailInsertCnt > 0 THEN
nEcoSeq := nEcoSeq + 1;
BEGIN
DBMS_OUTPUT.PUT_LINE('신규/변경 AGILE_BOM_H BOM 생성 정보 START : ' || mF_ECO_ID ( nMainLoopIdx )||'-'||sF_ITEM ( nSubIdx ));
IF mF_ECO_USEDATE( nSubIdx ) > mF_ECO_EDATE( nSubIdx ) THEN
INSERT INTO AGILE_BOM_H@GLONET
(
ECO_NO
,MATNR_TOP
,ECO_SEQ
,IF_TYPE
,ECO_SDATE
,ECO_STIME
,ECO_EDATE
,ECO_ETIME
,TEXT1
,TEXT2
,TEXT3
,TEXT4
,TEXT5
,END_MARK
,PLM_SEND_DATE
,PLM_SEND_TIME
,SAP_RCV_DATE
,SAP_RCV_TIME
,SAP_RCV_FLAG
,MODIFYDATE
,APPR_DATE
) VALUES
(
mF_ECO_NO ( nMainLoopIdx ) -- ECO_ID
,SUBSTR(sF_ITEM ( nSubIdx ) ,1,20) -- MATNR
,TO_CHAR(LPAD(nEcoSeq,2,0)) -- ECO_SEQ
,sF_IF_TYPE ( nSubIdx ) -- IF_TYPE
,mF_ECO_SDATE ( nMainLoopIdx ) -- ECO_SDATE
,mF_ECO_STIME ( nMainLoopIdx ) -- ECO_STIME
,mF_ECO_EDATE ( nMainLoopIdx ) -- ECO_EDATE
,mF_ECO_ETIME ( nMainLoopIdx ) -- ECO_ETIME
,mF_ECO_EMAIL ( nMainLoopIdx ) -- TEXT1
,mF_ECO_USER ( nMainLoopIdx ) -- TEXT2
,'' -- TEXT3
,'' -- TEXT4
,'' -- TEXT5
,'E' -- END_MARK
,TO_CHAR(SYSDATE,'YYYYMMDD') -- PLM_SEND_DATE
,TO_CHAR(SYSDATE,'HH24MISS') -- PLM_SEND_TIME
,'' -- SAP_RCV_DATE
,'' -- SAP_RCV_TIME
,'N' -- SAP_RCV_FLAG
,mF_MODIFYDATE ( nMainLoopIdx )
,mF_ECO_USEDATE ( nMainLoopIdx )
);
END IF;
IF mF_ECO_USEDATE( nSubIdx ) < mF_ECO_EDATE( nSubIdx ) THEN
INSERT INTO AGILE_BOM_H@GLONET
(
ECO_NO
,MATNR_TOP
,ECO_SEQ
,IF_TYPE
,ECO_SDATE
,ECO_STIME
,ECO_EDATE
,ECO_ETIME
,TEXT1
,TEXT2
,TEXT3
,TEXT4
,TEXT5
,END_MARK
,PLM_SEND_DATE
,PLM_SEND_TIME
,SAP_RCV_DATE
,SAP_RCV_TIME
,SAP_RCV_FLAG
,MODIFYDATE
,APPR_DATE
) VALUES
(
mF_ECO_NO ( nMainLoopIdx ) -- ECO_ID
,SUBSTR(sF_ITEM ( nSubIdx ) ,1,20) -- MATNR
,TO_CHAR(LPAD(nEcoSeq,2,0)) -- ECO_SEQ
,sF_IF_TYPE ( nSubIdx ) -- IF_TYPE
,mF_ECO_SDATE ( nMainLoopIdx ) -- ECO_SDATE
,mF_ECO_STIME ( nMainLoopIdx ) -- ECO_STIME
,mF_ECO_EDATE ( nMainLoopIdx ) -- ECO_EDATE
,mF_ECO_ETIME ( nMainLoopIdx ) -- ECO_ETIME
,mF_ECO_EMAIL ( nMainLoopIdx ) -- TEXT1
,mF_ECO_USER ( nMainLoopIdx ) -- TEXT2
,'' -- TEXT3
,'' -- TEXT4
,'' -- TEXT5
,'E' -- END_MARK
,TO_CHAR(SYSDATE,'YYYYMMDD') -- PLM_SEND_DATE
,TO_CHAR(SYSDATE,'HH24MISS') -- PLM_SEND_TIME
,'' -- SAP_RCV_DATE
,'' -- SAP_RCV_TIME
,'N' -- SAP_RCV_FLAG
,mF_MODIFYDATE ( nMainLoopIdx )
,mF_ECO_USEDATE ( nMainLoopIdx )
);
END IF;
DBMS_OUTPUT.PUT_LINE('AGILE_BOM_H@GLONET BOM 생성 정보 INSERT : ' || TO_CHAR(SQLCODE)||'-'||sql%rowcount||'건' );
END;
END IF;
END LOOP;
END LOOP;
위에 처러 IF 를 써써 할려고 했더니 정상적으로 프로시져는 되는데,,,,,만약 데이터가 한건이면 정상적으로 실행이 됩니다,,, 그런데 데이터가 두건이상이면 찾을수 없다고 에러가 뜨는데,,,이유를 몰르게써요,,,
정확히 날짜는 비교해서 디비에 박히는데,,두건이상이면 ㅜㅜ 혹시 조언좀 구할수 있을까요? |