PostgreSQL 函数实例 古城微笑少年丶 2022-11-21 11:44 128阅读 0赞 -- 插入 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();
还没有评论,来说两句吧...