最近工作上遇到了一个问题就是数据库字段转化,将varchar2字段转化为clob,但是转的时候报出ORA-22858: invalid alteration of datatype这个错误,经过查询,问题定位如下:
目前Oracle所有的版本好像都是不支持直接将varchar2转化为clob,只要转化就会报ORA-22858: invalid alteration of datatype;这是由于clob字段的特殊性,限制了直接修改数据类型。但是数据库表的记录为空的话,可将varchar2直接转为LONG类型,而LONG类型不管有没有值都是可以直接转化围为CLOB类型。
但是LONG类型的转化,Oracle并不是简单地将LONG类型转化为CLOB,而是生成了一个临时列,将数据保存,然后将原来的LONG列删除!
还有一个更简单粗暴的方法,就是将原来的varchar2字段的列删除掉,重新建一个CLOB字段的列!
越努力,越幸运!