• 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;
  • 相关阅读:
    HIFU控制器的显示板
    风扇控制板
    直流源控制板
    HIFU的心脏
    强劲的全桥驱动
    脑电模块
    另一个12导联心电模块
    数据处理,pandas方面遇到的问题
    6.13 django
    python 零基础学习之路-06 常用模块
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11977611.html
Copyright © 2020-2023  润新知