3
을 스키마의 모든 테이블에서 VARCHAR2
으로 대체하려면 어떻게합니까?CHAR을 VARCHAR2로 바꿉니다.
참고 : 나는 스크립트를 저장하고 다시 실행할 수 있도록 ALTER TABLE
문을 반환하는 쿼리에 만족합니다.
을 스키마의 모든 테이블에서 VARCHAR2
으로 대체하려면 어떻게합니까?CHAR을 VARCHAR2로 바꿉니다.
참고 : 나는 스크립트를 저장하고 다시 실행할 수 있도록 ALTER TABLE
문을 반환하는 쿼리에 만족합니다.
select 'ALTER TABLE "' || owner || '"."' || table_name
|| '" MODIFY ("' || column_name
|| '" VARCHAR2(' || data_length || '));'
from all_tab_columns tc
where data_type = 'CHAR'
and owner = :schemaname
and exists (
select 1
from all_tables t
where tc.owner = t.owner
and tc.table_name = t.table_name
);
나는 휴지통에있는 표를 생략하기 위해 원래의 대답을 확장했다. http://stackoverflow.com/questions/2446053/what-are-the-bin-tables-in-oracles-all-tab-columns-table을 참조하십시오. –
주의해야 할 사항은 다음과 같습니다. 새로운'VARCHAR2' 칼럼에 후행 공백이있을 수 있으며 오라클은 후행 공백이'VARCHAR2' 칼럼에서 중요하다고 간주하므로 'A'와 'A'값은 동일하지 않습니다. –