database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38894 게시물 읽기
No. 38894
오라클 프로시져 문의 입니다,,,,
작성자
진현철(raper45rpm)
작성일
2011-09-22 16:57ⓒ
2011-09-22 16:59ⓜ
조회수
4,873

안녕하세요, ,오라클 프로시져 질문드리겠습니다,, 초보라 형편없이 책보면서 하고있는데요,

일단 프로시져가

 

   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 를 써써 할려고 했더니 정상적으로 프로시져는 되는데,,,,,만약 데이터가 한건이면 정상적으로 실행이 됩니다,,, 그런데 데이터가 두건이상이면 찾을수 없다고 에러가 뜨는데,,,이유를 몰르게써요,,,

정확히 날짜는 비교해서 디비에 박히는데,,두건이상이면 ㅜㅜ 혹시 조언좀 구할수 있을까요?

이 글에 대한 댓글이 총 2건 있습니다.

insert 결과가 두건이라는건가요?  insert 구분이 insert ... select 가 아닌데 두건이 들어갈수 있나요?

트리거에서 호출하는걸 말하는거라면 좀 다를거같긴한데요..

1님이 2011-09-22 17:33에 작성한 댓글입니다. Edit

프로시져 위에 셀렉트 하는 부분이 있는데 그거는 표시 안했어요,,, 셀렉트 할때 여러건이 있을수가 있거든요  그 셀렉트 값을

 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  로 변경

 

여기에 담아 놓고,,그후에 인서트 하는거에요,,,,,,한건이 있을때는 정상적으로 디비에 박는데,,,두건이상일 경우는 데이터를 찾을수가 없다고 하네요,,,,셀렉트는 정상적으로 2건 해오는데,,,

진현철(raper45rpm)님이 2011-09-23 10:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38897날짜 질문드립니다... [4]
ssing
2011-09-23
4442
38896쿼리문 질문드립니다. [1]
오라클초보임
2011-09-23
3419
38895검색문이 한글이나 한자가 될 수 있는 상황에서 [1]
초보
2011-09-22
3657
38894오라클 프로시져 문의 입니다,,,, [2]
진현철
2011-09-22
4873
38893오라클 에러좀 봐주세요! [3]
김태혁
2011-09-22
3333
3889211g에서 continue 를 10g 에서는? [1]
하홍민
2011-09-22
3493
38891해당컬럼값이 있는 테이블 전체 조회를 해서 업데이트를 해야하는데요.. [3]
궁금해요
2011-09-22
5833
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다