ibatis / Oracle - INSERT中的SELECT查询失败

时间:2010-03-18 21:11:02

标签: sql oracle ibatis

我正在尝试使用iBatis进行插入操作。

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

内部选择查询总是失败并返回NULL。但是,如果我将#field2#替换为仅在内部查询中的实际值,它可以正常工作。 为什么iBatis不在内部查询中替换fieldvalues?

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用单个子查询并省略VALUES关键字的以下方式适用于Oracle,请尝试使用iBatis:

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

答案 1 :(得分:1)

该语法对Oracle无效。请尝试以下方法:

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