模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为
clob
1、假设要修改字段数值为空,则可以直接修改;
可是发现如下错误:
SQL> alter
tablebatchintfloadlog
modify (resultinfo
clob);
alter
tablebatchintfloadlog
modify (resultinfo clob);
ORA-22858: 数据类型的更改无效
经查找资料:可参见:http://www.360doc.com/content/12/0627/10/7662927_220705696.shtml,发现clob类型比较特殊,和其他字段类型不同,不可以从其他字段类型直接转换为clob(blob也一样),可以通过long类型作为中间转换的桥梁,即先将varchar2转换为long,然后再将long转换为clob,即可。
SQL> alter table test modify (loc long
);
Table altered
SQL> alter table test modify (loc clob
);
Table altered
2、假设要修改字段有数据,则可以使用以下两种方法;
方法一:
alter table batchintfloadlog rename column resultinfo to
resultinfo_temp;
alter table batchintfloadlog add resultinfo
clob;
update batchintfloadlog set
resultinfo=trim(resultinfo_temp);
alter table batchintfloadlog drop column
resultinfo_temp;
方法二:
create table batchintfloadlog_temp as
select * from batchintfloadlog where
1=2;
alter table batchintfloadlog_temp modify (resultinfo
long);
alter table batchintfloadlog_temp modify (resultinfo
clob);
insert into batchintfloadlog_temp select * from
batchintfloadlog;
drop table batchintfloadlog;
rename batchintfloadlog_temp to
batchintfloadlog;