日期:2014-05-17  浏览次数:21006 次

oracle 将vchar 类型的column改为clob
其实知道了两种方法,只是有点疑惑,本人oracle小白,请指教:

方法一:
alter table t add c_copy clob;
update t set c_copy = c;
commit;
alter table t drop column c;
alter table t rename column c_copy to c;

方法二:
alter table t add c_copy varchar2(4000);
update t set c_copy = c;
update t set c = null;
commit;
alter table t modify c long;
alter table t modify c clob;
update t set c = c_copy;
commit;
alter table t drop column c_copy;

这两句我都试过了,都可以,但不知道那个更好?
还有,方法二中加粗的语句不懂,为什么显转long,再转clob呢?
------解决方案--------------------
楼主从varchar是不能直接alter table t modify c clob;的。会报错:ORA-22858: 数据类型的变更无效
所以通过long类型过度。

推荐使用第一种吧。
------解决方案--------------------
第二种做了多次转换呀