ibatis / Oracle - сбой запроса SELECT внутри INSERT - PullRequest
1 голос
/ 19 марта 2010

Я пытаюсь выполнить операцию вставки с помощью iBatis.

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

Внутренний запрос выбора всегда терпит неудачу и возвращает NULL. Но если я заменим # field2 # фактическим значением только во внутреннем запросе, он будет работать нормально. Почему iBatis не подставляет значения полей во внутренних запросах?

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 19 марта 2010

Следующий способ использования одного подзапроса и пропуска ключевого слова VALUES будет работать с Oracle, попробуйте iBatis:

INSERT INTO SCHEMA.TABLE
   (FIELD1, 
    FIELD2, 
    FIELD3)
   (
        SELECT
            #field1#, 
            ANOTHER_FIELD,
            #field2#
        FROM 
            SCHEMA.TABLE
        WHERE 
            FIELD4= #field2#
   )
1 голос
/ 19 марта 2010

Этот синтаксис недопустим для Oracle. Попробуйте следующее:

INSERT INTO SCHEMA.TABLE
   (FIELD1, 
    FIELD2, 
    FIELD3) 
   SELECT 
       #field1#,
       ANOTHER_FIELD,
       #field2#
   FROM 
       SCHEMA.TABLE
   WHERE 
       FIELD4= #field2#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...