删除有/无子记录的数据

来源:互联网 发布:平台软件开发 编辑:程序博客网 时间:2024/03/29 19:09
-- 删除有子记录的数据
declare 
  
  v_system_id   it_high_system_info.system_id %type;
v_sqlerrm     varchar2(999);
v_constraint  varchar2(999);
v_table       varchar2(999);
v_sql         varchar2(999);
  v_i number := 0;
  v_k number := 0;


  cursor cur_str is 
select system_id
from it_high_system_info t
where not exists (select *
from it_high_system_info_intf b
where b.year = 2013
and t.price_system_id = b.price_system_id)
and year = 2013;


begin
  
  for c_str in cur_str loop
  
    v_system_id := c_str.system_id;

for i in 1..9 loop
   
begin
   
delete it_high_system_info t where t.system_id = v_system_id;
   
exception when others then
     
v_sqlerrm := sqlerrm;

--获取约束名称
select substr(v_sqlerrm, instr(v_sqlerrm, '.') +1, instr(v_sqlerrm, ')') -1 - instr(v_sqlerrm, '.') ) into v_constraint from dual; 

--根据约束名称获取表名
select table_name into v_table from all_constraints ac where ac.constraint_name = v_constraint;

--根据子系统ID删除数据
v_sql := 'delete '||v_table||' where system_id = '''||v_system_id||'''';

execute immediate v_sql;
     
end;

end loop;
    
  end loop;
  

end;

----删除无子记录的数据
declare 
  
  v_system_id   it_high_system_info.system_id %type;
     v_i number := 0;
  v_k number := 0;


  cursor cur_str is 
    select * from it_high_system_info where year = 2013;


begin
  
  for c_str in cur_str loop
  
    v_system_id := c_str.system_id;
    
    begin
    
      delete it_high_system_info t where year = 2013 and t.system_id = v_system_id;
      v_i := v_i + 1;
    
    exception when others then
      v_k := v_k + 1;
      null;
      
    end;
    
  end loop;
  
  dbms_output.put_line('删除'||v_i||'条无子记录的数据!');
  dbms_output.put_line('没有子记录的数据有'||v_k||'条!');
  
end;

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 换新手机了钉钉怎么办 公众号申请链接无效怎么办 指纹打卡机时间调错已打卡怎么办 智慧云平台先锋讲座打不开怎么办 下雨穿套裙工装好冷怎么办 国家债务违约不要国际融资怎么办 欠钱的确还不起怎么办 生完孩孑后手发账握不死手怎么办 工作调动没啥消息怎么办 裁剪刀老是推歪怎么办 衣服上粘胶水了怎么办 衣服钻掉了有胶怎么办 衣服上贴纸掉了怎么办 裤子沾上502胶水怎么办 衣服上沾泡沫胶怎么办 衣服上面滴上502怎么办 502胶水弄衣服上怎么办 裤子上粘了胶怎么办 胶水滴在衣服上怎么办 衣服上有502胶水怎么办 衣服上面粘了胶怎么办 衣服上的胶干了怎么办 凌晨4点到火车站怎么办 运管罚款没钱交怎么办 郑州地铁票没买怎么办 遇到吸毒者拦路威胁要钱怎么办 开车遇见拦路要钱的怎么办 高速上有人拦车怎么办 马路上有人拦车怎么办 苹果手机下截软件要钱怎么办 孩子在学校问同学要钱怎么办 在学校被同学要钱怎么办 把人家店砸了要怎么办 外汇出金不到账怎么办 把罚款单弄丢了怎么办 在12306买不到下铺怎么办有 地铁票买反了怎么办 香港买错特惠票怎么办 到达迪拜t3 后怎么办 海藻面膜调多了怎么办 被鸡爪子抓伤了怎么办