-- 插入 wr_map_wids_cell 函数
CREATE OR REPLACE FUNCTION npas.insertWrMapWidsCell() RETURNS void AS $$
DECLARE
widsWrid uuid; -- 室分无线ID
widsYrid VARCHAR(256); -- 室分亿阳ID
widsCellWrid uuid; -- 室分小区无线ID
cellWrid uuid; -- 小区无线ID
cellYrid VARCHAR(256); -- 小区亿阳ID
cellYridArr VARCHAR(256)[];
-- 定义 begin end, 保证在同个事务中处理
BEGIN
-- 查询全部 综合资源网元ID,GSM信源小区ID,LTE信源小区ID,关联NRCELL_ID 并遍历处理
for widsYrid,cellYridArr in (select 综合资源网元ID,string_to_array(concat(GSM信源小区ID,',',LTE信源小区ID,',',关联NRCELL_ID),',') from zongzi.v_device_wireless_distributor) loop
-- 根据 室分亿阳ID 查询 wr_yr_sync_log 中 yr_res_type_key 为 wids 的对应 wr_cuid
select wr_cuid into widsWrid from npas.wr_yr_sync_log where yr_res_type_key='wids' and yr_cuid=widsYrid;
foreach cellYrid in array cellYridArr loop
-- 如果是空字符串,则跳过不处理
if cellYrid='' then
continue;
else
-- 根据 小区亿阳ID 查询 wr_yr_sync_log 中 yr_res_type_key 为 cell 的对应 cellWrid
select wr_cuid into cellWrid from npas.wr_yr_sync_log where yr_res_type_key in('gsmcell','eutrancell','nrcell') and yr_cuid=cellYrid;
select uuid_generate_v4() into widsCellWrid;
-- 插入一条 wr_map_wids_cell 记录
insert into npas.wr_map_wids_cell(wids_cell_id,wids_id,logic_cell_id,lastmodifytime,is_del) values (widsCellWrid,widsWrid,cellWrid,now(),'f');
-- 插入一条 wr_yr_sync_log_20201031_add 记录
insert into npas.wr_yr_sync_log_20201031_add(yr_res_type_key,wr_cuid,yr_cuid,create_time,last_sync_time) values ('wids_cell',widsCellWrid,concat(widsYrid,',',cellYrid),now(),now());
end if;
end loop;
end loop;
END;
$$ LANGUAGE plpgsql;
-- 执行以下语句可生效
-- select npas.insertWrMapWidsCell();
-- 执行完后,删除 npas.insertWrMapWidsCell() 函数,防止重复执行 20201101 pre/pro均已执行
DROP FUNCTION npas.insertWrMapWidsCell();
PostgreSQL 函数实例
猜你喜欢
转载自blog.csdn.net/londa/article/details/109428579
今日推荐
周排行