2010-03-18 55 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

這句法是Oracle無效。請嘗試以下操作:

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