Я новичок в MyBatis. Я пытаюсь сделать пакетную вставку в одну таблицу ORACLE db. Это код в файле XML картографа,Динамический sql для пакетной обработки
<insert id="insertAuditLogAsBatch" >
insert into AUDIT_LOG (ID,ENTITY_ID,PERIOD_ID)
select SEQ_AUDIT_LOG.nextval, entityId, periodId
from
<foreach collection="auditLogs" item="auditLog">
(SELECT 1 as entityId, 1 as periodId FROM DUAL UNION ALL)
</foreach>
SELECT * FROM dual
</insert>
Это пример кода, и я пытаюсь упорствовать жестко закодированные значения.
выше программа бросает ошибку ниже от Oracle,
; плохая грамматика SQL []; вложенное исключение java.sql.BatchUpdateException: ORA-00928: отсутствует ключевое слово ВЫБРАТЬ
Сформированный партия SQL из моего кода есть «UNION ALL» в конце перед закрытием скобки, «)». Мне нужно следующее: за последние выберите заявление Мне не нужен «UNION ALL» в конце. Мой вопрос,
- Могу ли я проверить некоторые условия внутри Еогеасп так, что последний выбрать не будет иметь «UNION ALL». вместо этого мы должны иметь скобку «)», чтобы указать конец операторов SELECT.
- Вставляется ли эта вставка строк? Я пытаюсь протестировать пакетную операцию, используя MyBatis здесь.
Я попытался с помощью этого <Еогеасп коллекция = пункт «auditLogs» = «Auditlog» открыт = «(» Разделитель = «UNION ALL„близко =“)»> Но теперь я получаю другую ошибку: плохо SQL-грамматика []; Вложенное исключение - это java.sql.BatchUpdateException: ORA-00933: команда SQL не была закончена. Также мы можем убедиться, что это пакетная вставка в базу данных? – user184794