ORACLE循环判断处理A表中字段是否在B表字段中出现(模糊LIKE)如果出现,将A表的代码插入到B表中。

业务逻辑我能描述,但实现的代码,我不太会写,有没有高手帮我看下该如何写。
需求描述:我两个表

图片说明

写一个循环从A表中取出 KEYWORDS 字段然后判断这个字段是否出现在B表的 '名称' OR '牌子 'OR '类型' 字段中 如果出现将A表字段对应的CODE插入到B表的CODE字段中。

举例 循环第一个抓到了3系 然后 与TABLE B 中 名称、牌子、类型做LIKE 查询是否在这三个字段中 如果存在 B表 第一行CODE 字段变为 01 ,完成一次循环。
图片说明

---------------------------------这个是我写的一个想象的代码,但有些步骤不知道怎么写,有大神能帮我补全吗。


create or replace procedure testProc_guo
as
cursor cur is select keywords,brand_code from TMP_GUOSHOU_dim_test;
keywords varchar(100);
brand_code varchar(100);

cursor cur2 is select vehicle_brand_name,vehicle_series_name,vehicle_model_name from tmp_guoshou_guoyubo;
vehicle_brand_name varchar(100);
vehicle_series_name varchar(100);
vehicle_model_name varchar(100);

Begin

open cur;
fetch cur into keywords;
while cur%found loop
dbms_output.put_line(keywords);
fetch cur into keywords;
end loop;

open cur2; 
fetch cur2 into vehicle_brand_name,vehicle_series_name,vehicle_model_name;

--做一个A表和B表的判断 得到对应的 brand_code 我想把 这个brand_code 和 名称 牌子 类型 这三个字段一起放到一个新表里面这块不太会写
loop
case when vehicle_brand_name like '%'||keywords||'%' or
vehicle_series_name like '%'||keywords||'%' or
vehicle_model_name like '%'||keywords||'%'
then cur1.brand_code
end
end loop;

insert into nmlz_veh_model_custom_guo (vehicle_brand_name,vehicle_series_name,vehicle_model_name,brand_code)
values (cur2.vehicle_brand_name,cur2vehicle_series_name,cur2vehicle_model_name,cur.brand_code)

close cur;
close cur2;
Exception
When others then
Rollback;
End;


1,把B表的名称,牌子,类型拆开,另外生成个主键名称+牌子+类型
select 名称 as searchid,名称||牌子||类型 as mainid

into C
from B
union
select 牌子,名称||牌子||类型 from B
union
select 类型,名称||牌子||类型 from B

结果类似这种
searchid,mainid
华晨宝马 ,华晨宝马宝马3系宝3
宝马3系 ,华晨宝马宝马3系宝3
宝3 ,华晨宝马宝马3系宝3
。。。

这样,你就可以直接关联了,先把A和C关联,找到关键字出现的mainid,然后用C的mainid去B表里找就行了
SELECT disticnt B.*,CASE WHEN c.searid is not null then '01' else '00' end
FROM B
LEFT JOIN
(select c.mainid from C
inner join A
on b.searchid LIKE '%'+a.keywords+'%') D
on D.mainid =B.名称||B.牌子||B.类型

UPDATE biao_B
  SET code=biao_A.code
FROM biao_A
WHERE biao_B.名称  LIKE '%'||biao_A.keywords||'%'
      OR biao_B.牌子 LIKE '%'||biao_A.keywords||'%'
      OR biao_B.类型 LIKE '%'||biao_A.keywords||'%'

create or replace procedure testProc_guo
is begin
for rec in (select keywords,brand_code from tmp_guoshou_dim_test)
loop

for rec2 in (select vehicle_brand_name,vehicle_series_name,vehicle_model_name from tmp_guoshou_guoyubo)
loop
if
rec2.vehicle_brand_name like '%'||rec.keywords||'%' or
rec2.vehicle_series_name like '%'||rec.keywords||'%' or
rec2.vehicle_model_name like '%'||rec.keywords||'%' --一条一条的进行遍历,进行判断
then
insert into nmlz_veh_model_custom_guo(vehicle_brand_name,vehicle_series_name,vehicle_model_name,brand_code)
values(rec2.vehicle_brand_name,rec2.vehicle_series_name,rec2.vehicle_model_name,rec.brand_code);
end if;
end loop;
end loop;

commit;
end;