데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

안녕하세요~

 

MS-SQL2012, Oracle 사이의 Merge Into 구문 문의 입니다.

 

MS-SQL에서 실행하여 Oracle에 Insert , Update 하는 SP를 만들려고 합니다.

 

아래 SP 참고.

 

MS-SQL에서 로컬의 Data와 Oracle의 Data를 OpenQuery를 사용하여 비교 후

 

Merge Into 구문을 사용하여 Match 이면 Oracle DB에 Update를,

 

NOT MATCHED이면  Oracle DB에 Insert 를 하는 SP인데. 오류가 나서요.

 

오류원인을 확인부탁드립니다~~

 

 

-----------------------------------------------------------------------------------------------------------


Create PROCEDURE [dbo].[SP_KHS](
 @P_DATE  VARCHAR(8) = NULL
)
AS
BEGIN
 
 begin tran

 MERGE INTO (
 SELECT @P_DATE AS WKDT, IMST_ITEM, COUNT(*) AS QTYS
   FROM T_MODM
  WHERE RTCL_DATE >= CONVERT(CHAR(8),DATEADD("DAY", -1, GETDATE()),112)
  GROUP BY IMST_ITEM
 ) SYS   -- MS-SQL DB
 USING
 (SELECT * FROM OPENQUERY(SSLOC,'SELECT WKDT, IMST_ITEM, QTYS
    FROM T_WKRO
    WHERE WKDT = ''20130101'')
 ) LOC  -- Oracle DB
    ON  SYS.WKDT = LOC.WKDT AND SYS.IMST_ITEM = LOC.IMST_ITEM
  WHEN MATCHED THEN

     UPDATE OPENQUERY(SSLOC,'SELECT  *
          FROM T_WKRO
          WHERE WKOR_WKDT = ''20130101'')
     SET WKRO_OQTY = SYS.QTYS

  WHEN NOT MATCHED BY TARGET THEN
  
  INSERT OPENQUERY(SSLOC,'SELECT WKDT, IMST_ITEM, QTYS
          FROM T_WKRO
         WHERE WKDT = ''20121205''
        ')
  SELECT SYS.WKDT, SYS.IMST_ITEM, SYS.QTYS

 IF(@@ERROR <> 0 )  GOTO ERR

 commit tran
 return
ERR:
 rollback tran
 return

 

-----------------------------------------------------------------------------------------------------------

END

No. Subject Author Date Views
6331 lock 관련 질문입니다 [1] 가서리 2013.01.17 7974
6330 outer join 문의 [4] 길주석 2013.01.17 7009
6329 DB에 똑같은 행으로 똑같은 ID 값을 가진 걸 행으로 바꿔 줄려면 어떻게 해야하나요?? [1] dcman 2013.01.16 6201
6328 디비의 특정사용자 전체로그 하려면요..? [3] 문수정 2013.01.16 6527
6327 update 문 질문좀 드릴께요~ [7] 뽀챙 2013.01.16 6342
6326 대용량 데이터의 like 검색은 어떻게 구현하나요? [3] AceCarrot 2013.01.16 8754
6325 PK 설정 여쭤봅니다. [1] Thope 2013.01.16 7159
6324 rollup 소계 구하기 [1] jwko 2013.01.16 7150
6323 dll로 만든 확장프로시져를 일정시간에 다시 올리기가 가능한가요? [2] 블랙 2013.01.15 6082
6322 [질문]유니코드 변환 방법 [3] 구본헌 2013.01.15 8244
6321 SQL 삭제 후 오류 [1] 해바라기 2013.01.15 7307
6320 프로시져내 스트링 검색 [7] 전념 2013.01.15 6386
6319 XML관련... [2] 메칸더 2013.01.15 7075
6318 데이터 두줄로 표현하기~!ㅠㅠ [2] 뽀챙 2013.01.14 8366
6317 특정 코드가 있는 칼럼의 총 카운터를 얹고 싶은데요. [2] 변닷컴 2013.01.14 6297
6316 mssql에 있는 테이블들을 오라클로 가져올려고 하는데 어떻게하나요? [1] 알려주세용 2013.01.14 7016
6315 전체 백업할때 나타나는 메세지의 의미 [2] 레지덥던이불 2013.01.14 6325
» MS-SQL2012, Oracle 사이의 Merge Into 문의 입니다. [3] 착한이 2013.01.14 13225
6313 ROW_NUMBER()에서 정렬할 필드 문제 [2] 손담비 2013.01.14 8625
6312 테이블의 컬럼 데이터 형식 추출 [4] l3lue 2013.01.11 7716





XE Login