Oracle SQL Рекурсивный запрос - PullRequest
0 голосов
/ 07 августа 2020

У вас есть запрос по этому поводу - есть обновление таблицы, где мне нужно заполнить данные за более чем год, и из-за кода, который я должен обновлять днем ​​(что занимает 4-5 минут в день), кто-нибудь знаю, как я могу сделать это более эффективно, установив список дат, чтобы я мог делать это в фоновом режиме.

Так, например, если я установил переменную с именем: reqdate, которая является полем даты, и у меня есть список дат из запроса (например, 01.01.20, 02.01.20 ... 04.04.20) могу ли я что-то сделать, чтобы sql запускал это повторно, например: regdate = 01/01 / 20, затем, когда это будет сделано, автоматически выполнится 01.02.20 и так далее

Спасибо

1 Ответ

0 голосов
/ 07 августа 2020

Если я вас правильно понял, проще всего использовать предложение merge, например:

merge into dest_table t
using (
   select date'2020-01-01'+N as dt 
   from xmltable('0 to 10' columns N int path '.')
) dates
on (t.date_col = dates.dt)
whem matched then update
   set ...

Хотя я думаю, вам нужно изменить дизайн своего обновления на простое обновление, например

update (select ... from) t 
set ... 
where t.dt between date'2020-01-01' and date'2020-01-20'
...