PL/SQL관련 문의드립니다. 0 5 1,191

by 김춘성 [PL/SQL] [2010.04.07 16:45:15]


안녕하세요.
다름이 아니라 제가 SQL 코딩중에 오류가 났는데 원인을 찾아보려고
해도 몇일동안 삽질만 하네요.

다름이 아니라 PL/SQL에서 루프들돌려서 DBLINK로
원격데이터베이스에 MERGE INTO를 하려고 하면 오류가 납니다.

DECLARE
BEGIN
FOR cur2 IN (  SELECT 절.... ) <<< 쿼리생략
LOOP
    BEGIN
    MERGE INTO  XXX@DBMS_LINK; <<< 쿼리생략
    END;
    END LOOP;
    COMMIT;
END;

ORA-01008: 일부 변수가 결합되지 않았습니다
ORA-02063: line가 선행됨 (EDIS_LINK로 부터)
ORA-06512: 줄 45에서


그런데 INSERT로 하면 SQL이 잘 작동 됩니다.

DECLARE
BEGIN
FOR cur2 IN (  SELECT 절.... ) <<< 쿼리생략
LOOP
    BEGIN
INSERT INTO  XXX@DBMS_LINK; <<< 쿼리생략
    END;
    END LOOP;
    COMMIT;
END;


무슨문제일까요?
여기저기 찾아봐도 모르겠네요 ㅠㅠ
by 러드 [2010.04.07 17:06:35]
MERGE INTO 한다음에 insert를 할지 update할지 결정해 줘야 하는건 아닌가요?
MERGE를 안해봐서 ;;;

by proud [2010.04.07 17:21:17]
http://www.gurubee.net/lecture/1880

MERGE의 기본 문법을 확인해보세요.

by 패대기 [2010.04.07 17:27:45]
--구문
MERGE INTO
USING
ON
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN
INSERT

by 김춘성 [2010.04.07 20:14:47]
문법적으로는 이상이 없었어요. 프로시져 컴파일도 잘되구요.
근데 EXECUTE 하면 빨간색 오류가 뜨네요.

by 김춘성 [2010.04.07 20:15:33]
MERGE 아래 구문이나, INSERT구문안엣것들 SELECT 안에것들은 생략했어요 쿼리가 길어서...;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입