Вы должны взглянуть на функцию Updatable Join View в Oracle - это именно ваш вариант использования.
Сначала объедините все таблицы в подзапросе (это будет эффективно выполнено с помощью хеш-объединения без медленных последовательных циклов строк).
Чем UPDATE
подзапрос
Пример
create table a
(col1 number,
col2 number);
create table b
(col2 number,
col3 number);
create table c
(col3 number,
col4 number);
insert into a values(null,1);
insert into b values(1,2);
insert into c values(2,1);
update (
select a.col1, c.col4
from a
join b on a.col2 = b.col2
join c on b.col3 = c.col3
)
set col1 = col4
;
Обратите внимание, что UJV имеет некоторые предварительные условия. В случае пропуска это приводит к
ORA-01779: невозможно изменить столбец, который сопоставляется с таблицей без сохранения ключа
blockquote>В вашем случае вы должны вернуть таблицу [ 113] и
C
с уникальным индексом, чтобы гарантировать представление с сохранением ключаcreate unique index c_idx on c(col3); create unique index b_idx on b(col2);
Если это невозможно сделать на рабочих таблицах, просто используйте временную таблицу и создайте Благодаря уникальному индексу обновленное представление будет проще объединять только две таблицы.
Вы могли сделать это:
double step = 0.0025;
double rounded = ((int)(unrounded / step + 0.5)) * step;