Вы можете попробовать использовать оператор MERGE .
Данные испытаний:
SQL> create table FIRST_TABLE (
2 ID_FT number(20),
3 NAME_FT varchar2(200));
4 create table SECOND_TABLE (
5 ID_ST number(20),
6 NAME_ST varchar2(200));
7 insert into FIRST_TABLE (ID_FT,NAME_FT) values (1,null);
8 insert into FIRST_TABLE (ID_FT,NAME_FT) values (2,null);
9 insert into SECOND_TABLE (ID_ST,NAME_ST) values (1,'ST1');
10 insert into SECOND_TABLE (ID_ST,NAME_ST) values (2,'ST2');
11 insert into SECOND_TABLE (ID_ST,NAME_ST) values (3,'ST3');
12 commit;
Запрос:
SQL> merge into first_table t1
2 using second_table t2
3 on (t1.id_ft = t2.id_st)
4 when matched then update set t1.name_ft = t2. name_st;
5 commit;
6 select * from first_table;
ID_FT NAME_FT
---------- ----------
1 ST1
2 ST2
Также, если вы будете использовать MERGE
, вы можете вставить данные в first_table, если они отсутствуют.
SQL> merge into first_table t1
2 using second_table t2
3 on (t1.id_ft = t2.id_st)
4 when matched then update set t1.name_ft = t2. name_st
5 when not matched then insert (t1.id_ft,t1.name_ft) values (t2.id_st,t2.name_st);
6 commit;
7 select * from first_table;
ID_FT NAME_FT
---------- ----------
1 ST1
2 ST2
3 ST3