내가 만든건 아니지만 유용하게 쓰자!!

-- 모든 테이블에서 varchar 사이즈를 2배로 늘린다
-- varchar 는 4000 까지 이므로 현 사이즈를 가져와서 2000 보다 크면 4000까지로만 늘려준다.
prompt '======================================================='
prompt 'BE CAREFULL!!!!! THIS SCRIPT INCREASE VARCHAR SIZE * 2 '
prompt '======================================================='

declare
      cursor emp is
            select table_name, column_name , data_type, data_length
                        from all_tab_columns
                        where owner='&USER'
                        and data_type in ('CHAR', 'VARCHAR2' )
                        order by table_name;
                        atc     all_tab_columns%ROWTYPE;
begin
         for v_list in emp Loop
                         begin
                         if ( v_list.data_type = 'VARCHAR2' and  v_list.data_length > 2000 ) then
                                v_list.data_length := 2000;
                         end if;
                        dbms_output.put_line (  v_list.table_name || '.' || v_list.column_name || ' modify ');
                    execute immediate 'alter table ' || v_list.table_name || ' modify ' || v_list.column_name || ' varchar2(' || v_list.data_length * 2 ||')';
                         EXCEPTION
                         WHEN OTHERS THEN
                                dbms_output.put_line ( SQLERRM );
                         END ;
         end Loop;
end;
/

+ Recent posts