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;
  • 相关阅读:
    IE8使用chrome内核渲染
    JS中的call()方法和apply()方法用法总结(挺好 转载下)
    解决雷达图文字显示不全问题
    echarts legend文字配置多个颜色(转)
    vue中Axios的封装和API接口的管理
    echarts 折线拐点收藏
    echarts 折线图自定义颜色与修改legend颜色
    MUI框架 按钮点击响应不好的问题解决办法
    ECharts将折线变平滑和去掉点的属性
    单例模式——创建型模式01
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11977611.html
Copyright © 2011-2022 走看看