模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为 clob

1、假设要修改字段数值为空,则可以直接修改;

可是发现如下错误:

SQL> alter table batchintfloadlog modify  (resultinfo clob); 

alter table batchintfloadlog 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 CJ_INTERFACELOG_COPY  as select * from CJ_INTERFACELOG where 1=2; 

alter table CJ_INTERFACELOG_COPY modify (BIOGRAPHY long); 

alter table CJ_INTERFACELOG_COPY modify (BIOGRAPHY clob); 

alter table CJ_INTERFACELOG_COPY modify (JOINGINSENG long); 

alter table CJ_INTERFACELOG_COPY modify (JOINGINSENG clob); 

insert into CJ_INTERFACELOG_COPY select * from CJ_INTERFACELOG;

drop table CJ_INTERFACELOG; 

ALTER TABLE CJ_INTERFACELOG_COPY rename to CJ_INTERFACELOG;