zoukankan      html  css  js  c++  java
  • sql for loop

    --step1 disable constraint
    begin
    for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name) 
    LOOP
     begin
     execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
     exception
            when others then
            dbms_output.put_line(i.table_name);
            dbms_output.put_line(i.constraint_name);
     end;
    end loop;
    end; 
    /
    
    
    --step2: drop index
    BEGIN
      FOR ind IN 
        (SELECT ui.index_name FROM user_indexes ui, all_tables tab WHERE ui.TABLE_OWNER='xx' and tab.OWNER='xx' and ui.table_name=tab.table_name and INDEX_TYPE != 'LOB')
     LOOP
     BEGIN
          execute immediate 'DROP INDEX '||ind.index_name;
          exception
            when others then
            dbms_output.put_line(ind.index_name);
      END;      
      END LOOP;
    END;
    /
    COMMIT;
    
    --step3 update all coulmn
    undefine schema_name;
    declare 
      l_Err varchar2(200);
    begin
      for r in (select  atc.table_name, atc.column_name, atc.data_length
                from    all_tab_columns  atc, all_tables tab WHERE atc.owner=tab.OWNER  and atc.table_name=tab.table_name
                and   atc.data_type   = 'VARCHAR2'
                and     atc.char_used   = 'B' --Indicates that the column uses BYTE length semantics (B) or CHAR length semantics (C)
    --            and     atc.table_name  = 'INACTIVE_ACCOUNT' --TEST
                and     atc.owner       = upper('&&schema_name')) 
      loop
        begin
          execute immediate 'alter table '|| upper('&&schema_name')
                                          || '.'
                                          || r.table_name
                                          || ' modify '
                                          || r.column_name
                                          || ' varchar2('
                                          || r.data_length
                                          || ' char)'; 
        end; 
        commit; 
      end loop; 
    end;
    /
    COMMIT;
    
    --step4 create index
    please refer in last part
    
    
    --step5 create index - run two times
    begin
    for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name) 
    LOOP
     begin
    execute immediate 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
      exception
            when others then
            dbms_output.put_line(i.constraint_name);
     end;
    end loop;
    end; 
    /
    COMMIT;
    begin
    for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name) 
    LOOP
     begin
    execute immediate 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
      exception
            when others then
            dbms_output.put_line(i.constraint_name);
     end;
    end loop;
    end; 
    /
    COMMIT;
  • 相关阅读:
    pycharm安装以及简单使用教程
    print输出带颜色的方法详解
    UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)
    UVA-10600 ACM Contest and Blackout (次小生成树)
    UVALive-3887 Slim Span (kruskal)
    UVA-11280 Flying to Fredericton (dijkstra)
    UVA-11367 Full Tank? (dijkstra)
    UVA-10269 Adventure of Super Mario (dijkstra)
    UVA-10972 RevolC FaeLoN (边双连通+缩点)
    UVA-11396 Claw Decomposition (二分图判定)
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11977611.html
Copyright © 2011-2022 走看看