oracle修改字段类型由varchar2修改为clob类型

您所在的位置:网站首页 oracle数据库clob字段类型 oracle修改字段类型由varchar2修改为clob类型

oracle修改字段类型由varchar2修改为clob类型

2024-03-28 17:39| 来源: 网络整理| 查看: 265

模拟情景,表: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;



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3