Как хранить и использовать временные данные в запросе 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?


Ответы (0 шт):