由 “无法使用从远程表选择的 lob 定位符” 错误而引导出来的一系列问题解决方案

时间:2023-02-07 16:20:18

周一上班遇到一个数据加工问题:无法使用从远程表选择的 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、大功告成!!

万幸的一点是,这张表数据量不是很大!!!数据量太大这个方法就不太适用了!!!

总结:处理问题,一定要学会“曲线救国”!!!谢谢!!!