周一上班遇到一个数据加工问题:无法使用从远程表选择的 lob 定位符,由于数据源表不是自己的,不能对源数据做修改,于是我打起了存储过程的主意
我们公司的存过是分三步走,第一层是同步源数据,第二层是对一层的初加工,第三层则是细加工。由于问题出在第一层,字段不匹配,所以在理清了各
个表之间的关系后,确定了修改字段数据类型的解决方案。(底层表在在第二层用到的地方太多了,由于一二层是对应关系,所以一修改了,二也得改,
工程浩大啊!!!!)
第一层表数据类型修改很简单,直接alter table *** modify (123,clob),没有报错!!!
去第二层修改,同样用alter table *** modify (123,clob),立马报错:ORA-22858 数据类型的变更无效!!!(不清楚什么原因)
因为甲方催的急,没时间去仔细分析原因,所以当时想了一个简单的办法:新建,替换!!!
1、在原表中添加一个新的clob字段
alter table *** add 123 clob;
2、将原字段的值赋给新字段
update *** set 123 = 321;
3、删除原字段
alter table *** drop column 321;
4、修改新字段名
alter table *** rename column 123 to 321;
5、大功告成!!
万幸的一点是,这张表数据量不是很大!!!数据量太大这个方法就不太适用了!!!
总结:处理问题,一定要学会“曲线救国”!!!谢谢!!!