У меня есть таблица Jobmst, у которой есть первичный ключ jobmst_id, и родительский элемент посредством собственной ссылки на jobmst_prntid.
Таким образом, по сути, родители становятся группами для работы или других групп, так как вы можете вкладывать много уровней глубоко.
Я пытаюсь определитькогда есть несколько календарей (evntmst_ids) для данного родителя.
Но позже, если они скажут на уровне 3 в глубине иерархии, я хочу добавить уровень 2 и уровень 1 обратночерез другой незарегистрированный CTE, через процесс воссоздания jobmst_ids.
Чтобы сделать это, я попытался использовать временную таблицу видов, называемых jids. Идея состояла в том, чтобы добавлять все jobmst_ids для потомков родительских идентификаторов несколько раз, пока счетчик количества записей во временной таблице не останется постоянным, после чего все родители родителей родителей и т. Д. Будут добавлены.
Но я продолжаю получать это для jids:
PL / SQL: ORA-00942: таблица или представление не существует

Есть ли какой-то контекст, который делает jids невидимым? Как мне изменить код, чтобы это исправить? Совет очень ценится.
declare
cnt number;
lastcnt number;
begin
with cals_in_group(jobmst_prntid, evntmst_id, cal_count) AS
(
select jobmst_prntid, evntmst_id, count(1)
from jobmst
group by jobmst_prntid, evntmst_id
order by jobmst_prntid, evntmst_id
),
group_stats_gt_1(jobmst_prntid, tot_job_in_group, num_cal_in_group) AS
(
select jobmst_prntid, sum(cal_count) , count(1)
from cals_in_group
having count(1) > 1
group by jobmst_prntid
order by jobmst_prntid
),
/*
select num_cal_in_group, jobmst_prntid
from group_stats_gt_1
order by num_cal_in_group,jobmst_prntid
*/
jids(jobmst_id) AS
(
select jobmst_prntid from group_stats_gt_1
)
--select jobmst_id from jids;
select count(1)
into cnt
from jids;
lastcnt := -1;
WHILE cnt <> lastcnt
LOOP
lastcnt := cnt;
insert into jids
select jobmst_id
from jobmst
where jobmst_prntid in(select jobmst_id from jids)
and jobmst_id not in(select jobmst_id from jids);
select count(1)
into cnt
from jids;
END LOOP;
select count(1) from jids;
end;