INSERT문 다시 질문여 0 2 1,810

by 살찐강시 [2009.03.02 14:48:31]


다음과 같이 INSERT문장이 있다고 할때  

INSERT INTO TABLE_A ( NO, NM, ADDR, SAL)

SELECT NO, NM, ADDR, SAL FROM TABLE_B WHERE REG_DATE BETWEEN ’20080101’ AND ’20080630’

이것을 MERGE문의 NOT MATCHED에 넣을려고 합니다.

-------------START-------------

BEGIN

MERGE INTO TABLE_A

   .....

WHEN MATCHED THEN

   UPDATE ...

..........

WHEN NOT MATCHED THEN

   INSERT  ( NO, NM, ADDR, SAL)

   SELECT NO, NM, ADDR, SAL FROM TABLE_B WHERE REG_DATE BETWEEN ’20080101’ AND ’20080630’

END;

-------------END-------------

근데 NOT MATCHED 문장에서 VALUES가 없다고 에러가 나는군요.

VALUES를 넣으면 ORA-00936 누락된 표현식 에러가 발생하고요

혹시 다른 방법이 있을까요?

by 마농 [2009.03.02 14:59:09]
merge문을 잘못 이해하고 계신듯 합니다.
해당 Select구문은 Using 절에서 사용하셔야 할듯...
http://www.gurubee.net/lecture/1880

by feelie [2009.03.03 12:49:27]
지난번에 본내용인듯합니다. 내용은 merge을 가지고 서브쿼리로 insert를 원하시는 것 같습니다. 여기저기 찾아보았지만
그래고 좀 인정해주는 ask tom에서도 merge insert시 서브쿼리가 불가하니 update,insert 개별로 작성하라고 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입