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 更新为 00
execute immediate  'update jgdm set jgjcdm=''00'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and   instr('''||v_jgmc.jgmc||''',''市'')=0';
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjcdm 更新为 01
execute immediate  'update jgdm set jgjcdm=''01'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and   instr('''||v_jgmc.jgmc||''',''市'')<>0';
--2. 更新 上级机构代码
--把 '''||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 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 更新为 00
execute 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 更新为 01
execute 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 更新为 自己的 jgdm
execute 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;

写的不好,望见谅

分享最近写的 两条sql语句的更多相关文章

  1. 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。

    create table Emp( eid char(20) primary key, ename char(20), age integer check (age > 0), did char ...

  2. 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

    答:解1:  select top 10 * from A where id not in (select top 30 id from A) 解2:  select top 10 * from A ...

  3. 曾经很长时间不会写的两个SQL语句(group by,having)

    1.统计各部门的平均工资,平均资金(要求同时显示出部门名称,部门编号,部门总人数) SQL)),) 部门平均工资,)),) 部门平均资金 FROM EMP E RIGHT JOIN DEPT D ON ...

  4. 写出一条Sql语句:取出表Customer中第31到第40记录(SQLServer,以自动增长的Id作为主键,注意:Id可能不是连续的。

    select top 10 * from (select ROW_NUMBER() over(order by Id) as rows,* from Customer) as C where C.ro ...

  5. 写出一条SQL语句:取出表A中第31到40行记录(SQLserver,以自增长的ID作为主键,注意: 一条Sql语句:取出表A中第31到第40记录

    解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A wher ...

  6. 使用传入的总记录数实现一条sql语句完成分页查询

    使用传入的总记录数实现一条sql语句完成分页查询     问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...

  7. 关联映射、关联查询【重点掌握一条SQL语句的那种方法】

    1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本 ...

  8. CASE WHEN 及 SELECT CASE WHEN的用法(写了一坨烂代码发现两条sql就行了, 哎)

    转自:http://blog.sina.com.cn/s/blog_4c538f6c01012mzt.html Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE  ...

  9. [SQL]开启事物,当两条插入语句有出现错误的时候,没有错误的就插入到表中,错误的语句不影响到正确的插入语句

    begin transaction mustt insert into student values(,'kkk','j大洒扫','j','djhdjh') insert into student v ...

随机推荐

  1. Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例)

    1.Why 最近在写android画图经常用到这几个什么什么To,一开始还真不知道cubicTo这个方法,更不用说能不能分清楚它们了,所以特此来做个小笔记,记录下moveTo.lineTo.quadT ...

  2. BZOJ2083: [Poi2010]Intelligence test

    2083: [Poi2010]Intelligence test Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 241  Solved: 96[Sub ...

  3. Linux Shell编程(11)——退出和退出状态

    exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程.每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值 ...

  4. 最大流算法---Edmond-Karp

    这个算法是基于FF方法,就是通过不断求残余网络的增广路来增广流量,直到找不到增广路为止.注意:每次找到增广路以后都要更新原网络.EK算法通过BFS寻找源S到汇T的一条最短路径,因此时间复杂度是O(VE ...

  5. Zookeeper、Solr和Tomcat安装配置实践

    Zookeeper.Solr和Tomcat安装配置实践

  6. jQuery之DOM

    jQuery之DOM 1.jQuery属性. 获取元素属性的语法: attr(name)                   例子:$("#img1").attr("sr ...

  7. ExtractNewFolderPath

    unit Unit1; interface uses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,  Syst ...

  8. android中选择控件与选择界面自然过度效果的实现--一种新的交互设计

    转载请标明出处: http://blog.csdn.net/jianghejie123/article/details/40648931 在安卓中经常遇到须要选择一个东西的功能,比方选择日期.选择文件 ...

  9. [RxJS] Filtering operators: skipWhile and skipUntil

    After takeUntil() and takeWhile() function, let's have a look on skipWhile() and skilUntil() functio ...

  10. [AngularJS + Webpack] ES6 with BabelJS

    Install: npm install --save-dev babel-loader webpack.config.js: Add module, tell webpack to find all ...