2010-03-18 2 views
1

iBatis를 사용하여 삽입 작업을 수행하려고합니다.ibatis/Oracle - INSERT 내 SELECT 쿼리가 실패합니다.

INSERT INTO SCHEMA.TABLE 
     (FIELD1, 
     FIELD2, 
     FIELD3) 
    VALUES 
     (#field1#, 
      (SELECT 
       ANOTHER_FIELD 
      FROM 
       SCHEMA.TABLE 
      WHERE 
       FIELD4= #field2#), 
     #field2#) 

내부 선택 쿼리가 항상 실패하고 NULL을 반환한다. 그러나 # field2 #를 내부 쿼리에서만 실제 값으로 대체하면 제대로 작동합니다. iBatis가 내부 쿼리에서 필드 값을 대체하지 않는 이유는 무엇입니까?

아이디어가 있으십니까?

답변

3

오라클와 함께 작동 할 것 VALUES 키워드를 하나의 하위 쿼리를 사용하고 생략 다음과 같은 방법으로, iBatis를 함께 시도하십시오 : 구문은 오라클에 대해 유효하지 않습니다

INSERT INTO SCHEMA.TABLE 
    (FIELD1, 
    FIELD2, 
    FIELD3) 
    (
     SELECT 
      #field1#, 
      ANOTHER_FIELD, 
      #field2# 
     FROM 
      SCHEMA.TABLE 
     WHERE 
      FIELD4= #field2# 
    ) 
+0

참고 : SELECT 주변의 괄호는 선택 사항입니다. –

1

있다. 다음을 시도하십시오.

INSERT INTO SCHEMA.TABLE 
    (FIELD1, 
    FIELD2, 
    FIELD3) 
    SELECT 
     #field1#, 
     ANOTHER_FIELD, 
     #field2# 
    FROM 
     SCHEMA.TABLE 
    WHERE 
     FIELD4= #field2#