У меня есть база данных Oracle (12c) следующим образом:
create table t1 (
id number, tags clob, constraint t1_chk check ( tags is json) enable
);
create table t2 (id number);
create or replace view v1 as
select ta.id, ta.tags from t1 ta
join t1 tb on ta.id=tb.id;
Это создает две таблицы (t1 и t2) и представление (v1) для t1, присоединенного к себе.
Когда я выполняю некоторые запросы к столбцу json в t1 или v1, запрос работает как положено:
select t.id, t.tags.foo from t1 t;
select t.id, t.tags.foo from v1 t;
Поскольку в этом примере я не удосужился заполнить таблицы, строки не возвращаются, но запрос работает, как и ожидалось, и возвращает пустые строки с двумя столбцами, ID и FOO.
Однако, если я попытаюсь присоединиться к t2, запрос завершится неудачно с ошибкой неверного идентификатора ORA-00904:
select t.id, t.tags.foo, x.id from v1 t
join t2 x on x.id = t.id
ORA-00904: "T"."TAGS"."FOO": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 55 Column: 15
Есть ли у кого-нибудь какие-либо предложения относительно того, как получить соединение, подобное этому, для работы со столбцом json?