Я пытаюсь реализовать вариант использования в Mule4, когда тур необходимо назначить пользователю, если он еще не назначен.
Я надеялся, что смогу реализовать его, используя компонент Mule db: insert и используя сценарий SQL INSERT WHERE NOT EXISTS, как показано ниже.
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 (первичный ключ), но он автоматически создается последовательностью.
Тот же сценарий, измененный для запуска непосредственно в разработчике 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 не нравится синтаксис, но мне не очень понятно, что здесь не так. Я также не могу найти какой-либо пример реализации INSERT WHERE NOT EXISTS для компонента базы данных Mule4.
страница stackoverflow https://stackoverflow.com/questions/54910330/insert-record-into-sql-server-when-it-does-not-already-exist-using-mule направляет на страницу, которая не найдена.
Есть идеи, что здесь не так и как реализовать это в Mule4 без использования другого компонента Mule4 db: select перед db: insert?