Как хранить и использовать временные данные в запросе Oracle
Мне необходимо реализовать следующую задачу:
У меня есть некий сложный алгоритм, который рассчитывает предварительные данные и которые необходимо сложить и запомнить для последующего многократного использования. Пусть, для примера, это будет вот такой простой запрос:
Select ObjectId into #tmp from TableWithObjectIds
После этого у меня есть сложный рекурсивный запрос, который рассчитывает какие конкретно записи необходимо обновить и обновляет их Запрос выглядит примерно так:
WITH "HR" ("VAL1","VAL2")
AS (
Select Val1, Val2
from Tbl1
where valX in (select ObjectId from #tmp)
union all
Select Val1, Val2
from Tbl1
join HR on Tbl1.Val1 <> HR.Val1
where valX in (select ObjectId from #tmp)
) UPDATE TableX
SET TableX.Cell1 = Val1,
TableX.Call2 = Val2
from HR
where Table1.Val1 = HR.VVal1
update Teable3
set ...
from #tmp
where ...
Собственно вопрос: как это реализовать на Oracle?