У меня есть приложение Mule, выполняющее запрос к БД, который работает отлично (хотя и немного медленно). Это детали:
- Мул 3.7.2 EE
- Студия Anypoint 5.4.1
- jdk1.7.0_51
- Использование драйвера оракула
ojdbc6
Теперь, когда я создаю соединение database
с помощью драйвера ojdbc6
, без использования Common Table Expression (CTE), запрос выполняется нормально (за 2,5 секунды).
Когда я использую свой CTE, запрос завершается с ошибкой:
org.mule.api.MessagingException
: тип запроса должен быть одним из «[SELECT, STORE_PROCEDURE_CALL]», но должен быть «DDL» (java.lang.IllegalArgumentException
). Полезная нагрузка сообщения имеет тип: NullPayload.
Ясно, что в какой-то момент сервер Mule EE думает, что я пытаюсь выполнить DDL, хотя это не так.
Новый запрос с использованием CTE отлично работает (с точностью до 0,250 с) в SQL Developer, поэтому я знаю, что это не мой запрос.
Почему я не могу использовать оператор CTE (WITH
) в Mule?
Это известная проблема? Я делаю что-то неправильно?
Запрос (упрощенный) перед CTE:
SELECT '1' AS COLUMN_ONE, 'X' AS COLUMN_X
FROM DUAL
Запрос (упрощенный) после CTE:
WITH TBL AS
(
SELECT '1' AS COLUMN_ONE, 'X' AS COLUMN_X
FROM DUAL
)
SELECT * FROM TBL