1. 搭建基本环境
插入测试数据
insert into jgdm (jgdm,jgmc) values('12300000000','河南省');insert into jgdm (jgdm,jgmc) values('12300000005','河南省郑州市');commit;insert into jgdm(jgdm,jgmc) values(00300000000,'重庆市');insert into jgdm(jgdm,jgmc) values(00300000001,'重庆市石柱县');insert into jgdm(jgdm,jgmc) values(00300000004,'重庆市綦江区');commit;
2. 分情况 更新 表
declare begin for v_jgmc in (select jgmc from jgdm ) loop dbms_output.put_line('更新省的相关信息'); if instr(v_jgmc.jgmc,'省')<> 0 and ( instr(v_jgmc.jgmc,'县')=0 or instr(v_jgmc.jgmc,'区')=0 and instr(v_jgmc.jgmc,'市')<>0 ) then --1. 更新 机构级次代码--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 jgjcdm 更新为 00execute immediate 'update jgdm set jgjcdm=''00'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0';--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjcdm 更新为 01execute immediate 'update jgdm set jgjcdm=''01'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0';--2. 更新 上级机构代码--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 sjjgdm 更新为 自己的 jgdmexecute immediate 'update jgdm set sjjgdm=(select jgdm from jgdm where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0 and instr('''||v_jgmc.jgmc||''',jgjc)<>0) ';--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 sjjgdm 更新为 自己的 jgdm--execute immediate 'update jgdm set sjjgdm=(select jgdm from jgdm where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 )';--3. 更新 机构简称--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 jgjc 更新为 自己的'''||v_jgmc.jgmc||'''execute immediate 'update jgdm set jgjc='''||v_jgmc.jgmc||''' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0';--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjc 更新为 自己所属的市execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''省'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''省'')) where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0';commit;end if; dbms_output.put_line('更新直辖市的相关信息'); if instr('''||v_jgmc.jgmc||''','省')=0 and ( instr('''||v_jgmc.jgmc||''','县')<>0 or instr('''||v_jgmc.jgmc||''','区')<>0 and instr('''||v_jgmc.jgmc||''','市')<>0 ) then -- dbms_output.put_line(v_'''||v_jgmc.jgmc||'''.'''||v_jgmc.jgmc||'''); --1. 更新 机构级次代码--把 '''||v_jgmc.jgmc||''' 中 没有 ’省、县、区‘ 并且有 '市'的 jgjcdm 更新为 00execute immediate 'update jgdm set jgjcdm=''00'' where instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';--把 '''||v_jgmc.jgmc||''' 中 有 ’市、县、区‘ 并且没有 '省' 的 jgjcdm 更新为 01execute immediate 'update jgdm set jgjcdm=''01'' where ( instr('''||v_jgmc.jgmc||''',''县'')<>0 or instr('''||v_jgmc.jgmc||''',''区'')<>0 ) and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';--2. 更新 上级机构代码--把 '''||v_jgmc.jgmc||''' 中 有 ’市‘ 并且没有 ’省、县、区' 的 sjjgdm 更新为 自己的 jgdmexecute immediate 'update jgdm t2 set sjjgdm=(select jgdm from jgdm t1 where (instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0) and instr('''||v_jgmc.jgmc||''',''市'')<>0 ) ';--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjc 更新为 自己所属的市execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''市'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''市'')) where instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';--3. 更新 机构简称--把 '''||v_jgmc.jgmc||''' 中 有 '市' 并且没有 '县','区',‘省‘ 并且的 jgjc 更新为 自己的'''||v_jgmc.jgmc||'''execute immediate 'update jgdm set jgjc='''||v_jgmc.jgmc||''' where instr('''||v_jgmc.jgmc||''',''市'')<>0 and ( instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0 ) ';--把 '''||v_jgmc.jgmc||''' 中 有 ’市‘ 并且有 '县' '区'的 jgjc 更新为 自己所属的市execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''市'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''市'')) where instr('''||v_jgmc.jgmc||''',''市'')<>0 and (instr('''||v_jgmc.jgmc||''',''县'')<>0 or instr('''||v_jgmc.jgmc||''',''区'')<>0 ) '; commit; end if; end loop; end;
写的不好,望见谅
转载于:https://www.cnblogs.com/iyoume2008/p/5169205.html