merge에 대한 질문입니다. 원인 알려주시면 감사하겠습니다. 0 4 3,829

by 손님 [Oracle 기초] merge [2010.12.16 16:02:44]


이렇게 data가 있으면 update 없으면 insert를 하려고 합니다.
AND a.taskcode = b.taskcode
여기서 열명이 부적합하다고 나오는데요.
원인이 뭘까요?
이름을 제대로 입력했는데요. dea0101t 테이블에 taskcode라는 컬럼명이 있거든요.
음... workdate, resno, taskcode, pjtcd는 pk 입니다.

MERGE     INTO dea0101t a
USING    (
    SELECT
        '20101216' as workdate,
        '8012311234567' as resno,
        'BB100500' as taskcode,
        'ZZZZZZZZ' as pjtcd
    FROM dual
) b
ON (
    a.workdate = b.workdate
AND a.resno = b.resno
AND a.taskcode = b.taskcode
AND a.pjtcd = b.pjtcd
)
WHEN MATCHED THEN
    UPDATE SET
        a.taskcode = 'BB100500',
        a.pjtcd = 'ZZZZZZZZ',
        a.taskcodegb = 'BB',
        a.taskcode1 = '10',
        a.taskcode2 = '05',
        a.taskcode3 = '',
        a.inputmh = '100',
        a.inputdate = sysdate,
        a.inputresno = '8012311234567'
WHEN NOT MATCHED THEN
    INSERT (
        workdate,
        resno,
        taskcode,
        pjtcd,
        taskcodegb,
        taskcode1,
        taskcode2,
        taskcode3,
        inputmh,
        inputdate,
        inputresno,
        timestamp
    ) VALUES (
        '20101216',
        '8012311234567',
        'BB100500',
        'ZZZZZZZZ',
        'BB',
        '10',
        '05',
        '',
        '100',
        sysdate,
        '8012311234567',
        sysdate
    )
by v상이v [2010.12.16 16:10:32]
SELECT 절에서 검색조건으로 사용한 컬럼은 update가 안되는줄 알고있습니다.

UPDATE 쪽에 a.taskcode = 'BB100500', 구문을 빼고 한번 해보시겠어요?

by 봉 [2010.12.16 16:12:10]
on 절에서 사용한 칼럼에 대한 update가 안될겁니다
update 절에서 taskcode 값이 있어서 난 오류같은데요

by v상이v [2010.12.16 16:14:34]
아...On절 이었죠...;;

by 글쓴이 [2010.12.16 16:26:40]
감사합니다~^^ 감사감사감사 그렇군요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입