본문 바로가기
IT 개발/에러

[에러] ORA-01747: 열명을 올바르게 지정해 주십시오

by Dev.Jeon 2023. 2. 8.
반응형

에러메시지

### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01747: 열명을 올바르게 지정해 주십시오

 

현상/원인

    <insert id="insertChildContents" parameterType="childVO">
        /*St163.insertChildContents*/
        MERGE INTO T_CHILD
        USING DUAL
        ON (
             CHILD_NO 		= #{childNo}
        )
        WHEN MATCHED THEN		
        UPDATE SET
            , P_SEQ 		= #{seq}   
            , USE_YN 		= #{useYn}
        WHEN NOT MATCHED THEN    		   
        INTO ( 
              SEQ
            , P_SEQ
            , CHILD_NO 
            , USE_YN
        ) VALUES ( 
              SEQ_T_CHILD.NEXTVAL
            , #{seq}
            , #{childNo}
            , #{useYn}
        )	
    </insert>

merge into로 데이터를 insert update 하는 쿼리를 작성했습니다. 

원인은 문법오류입니다.

딱히 이상 할 것이 없는데 자세히 보면 update 쪽에 p_seq 앞에 첫줄부터 콤마가 있죠?

다른 변수를 넣었다가 삭데 할 때 같이 주의깊게 볼 필요가 있습니다.

 

해결

    <insert id="insertChildContents" parameterType="childVO">
        /*St163.insertChildContents*/
        MERGE INTO T_CHILD
        USING DUAL
        ON (
             CHILD_NO 		= #{childNo}
        )
        WHEN MATCHED THEN		
        UPDATE SET
              P_SEQ 		= #{seq}   ------------에러원인 콤마제거
            , USE_YN 		= #{useYn}
        WHEN NOT MATCHED THEN    		   
        INTO ( 
              SEQ
            , P_SEQ
            , CHILD_NO 
            , USE_YN
        ) VALUES ( 
              SEQ_T_CHILD.NEXTVAL
            , #{seq}
            , #{childNo}
            , #{useYn}
        )	
    </insert>

해당 첫 줄 콤마를 제거하면 잘 실행됩니다.

반응형

댓글