Это невозможно; Oracle поставляет определенную версию Java с определенной версией СУБД, специально модифицированной для запуска «внутри» СУБД. Он может быть обновлен только Oracle как часть новой версии или выпуск патча СУБД.
См. Например, это обсуждение: https://forums.oracle.com/forums/thread .jspa? ThreadId = 2300779
Попробуйте вместо UNION
:
select * from table A where Date between to_date('2019-01-01 00:00:00', 'YYYY.MM.DD HH24:MI:SS') and to_date('2019-01-31 23:59:59', 'YYYY.MM.DD HH24:MI:SS')
union
select * from table B where Date between to_date('2019-01-01 00:00:00', 'YYYY.MM.DD HH24:MI:SS') and to_date('2019-01-31 23:59:59', 'YYYY.MM.DD HH24:MI:SS');
Не уверен, как вы извлекаете значения, так как вы не показали фактический запрос, который дает ожидаемый результат.
Этот запрос, кажется, работает нормально, то есть он дает то, что вы хотели изначально.
select t2.id,t2.dt,coalesce(t1.value,t2.value) as value
from t2 LEFT JOIN t1 ON
to_char(t1.dt,'yyyymm') = to_char(t2.dt,'yyyymm') and
t1.id = t2.id
ORDER BY id,dt
Если вы добавите DISTINCT
, вы получите одну запись на комбинацию id,month
, если хотите удалить дубликаты. Вы также можете сделать group by id
или все, что хотите, чтобы получить агрегацию
. Обратите внимание, что ниже приводится только если вы хотите предпочесть значение таблицы 1 над таблицей 2, иначе достаточно просто выбрать строки из t2
coalesce(t1.value,t2.value) as value
Если у вас есть подобные ограничения в ваших инструментах запросов, может быть лучше создать представление в базе данных, которое объединяет таблицы, а затем запросить представление.
create view A_B as
выберите идентификатор, значение даты из таблицы A, объединение выберите идентификатор, значение даты из таблицы B;