[Sql] Oracle - char -> varchar 변환&크기 변환 프로시저
-- 모든 테이블에서 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;
/
[출처] [본문스크랩] char -> varchar 그리고 사이즈 늘리기|작성자 겨우리