1

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

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

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

有任何想法吗?

4

2 回答 2

3

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

INSERT INTO SCHEMA.TABLE
   (FIELD1, 
    FIELD2, 
    FIELD3)
   (
        SELECT
            #field1#, 
            ANOTHER_FIELD,
            #field2#
        FROM 
            SCHEMA.TABLE
        WHERE 
            FIELD4= #field2#
   )
于 2010-03-18T21:19:04.167 回答
1

该语法对 Oracle 无效。尝试以下操作:

INSERT INTO SCHEMA.TABLE
   (FIELD1, 
    FIELD2, 
    FIELD3) 
   SELECT 
       #field1#,
       ANOTHER_FIELD,
       #field2#
   FROM 
       SCHEMA.TABLE
   WHERE 
       FIELD4= #field2#
于 2010-03-18T21:21:38.750 回答