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;
  • 相关阅读:
    vue+filesaver+xlsx导出table为excel
    layer弹窗第一次不居中。然后再点击就居中了。解决办法
    GitHub的Fork 是什么意思
    什么时候会发送options请求
    实现H5连接分享给好友或朋友圈自定义分享内容(标题、图片、简介)的方法代码
    vue的element的table表头自定义添加按钮
    小程序配置体验版添加参数
    迅为iMX8M Mini开发板硬件接口原理分析
    迅为i.MX8MM 核心板引脚说明(按功能划分)
    迅为3399开发板Ubuntu 系统双屏异显,双屏同显测试
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11977611.html
Copyright © 2011-2022 走看看