Я пытаюсь реализовать сценарий использования в Mule4, когда пользователю необходимо назначить тур, если он еще не назначен.
Я надеялся, что смогу реализовать его с помощью Mule db: вставить компонент и использовать скрипт INSERT WHERE NOT EXISTS SQL, как показано ниже.
INSERT INTO TL_MAPPING_TOUR(TOURNO,TLID,SYSTEM) select :tourno,:tlid,:system from DUAL
where not exists(select * from TL_MAPPING_TOUR where (TOURNO=:tourno and TLID=:tlid and SYSTEM=:system))
Однако это приводит к исключению Mule
Message : ORA-01722: invalid number
Error type : DB:BAD_SQL_SYNTAX
TL_MAPPING_TOUR имеет id * Столбец 1010 * (первичный ключ), но он автоматически генерируется последовательностью.
Тот же сценарий, измененный для непосредственного запуска в SQL разработчику, как показано ниже, работает нормально.
INSERT into TL_MAPPING_TOUR(TOURNO,TLID,SYSTEM)
select 'CLLO001474','123456789','AS400'
from DUAL
where not exists(select * from TL_MAPPING_TOUR where (TOURNO='CLLO001474' and TLID='123456789' and SYSTEM='AS400'));
Ясно, что Mule db: компоненту вставки не нравится синтаксис, но мне не очень понятно, что здесь не так. Я не могу найти ни одного примера реализации INSERT WHERE NOT EXISTS для компонента базы данных Mule4.
stackoverflow page указывает на страницу, не найденную.
Любая идея что здесь не так и как реализовать это в Mule4 без использования другого компонента Mule4 db: select перед db: insert?