周一上班遇到一個數據加工問題:無法使用從遠程表選擇的 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、大功告成!!
萬幸的一點是,這張表數據量不是很大!!!數據量太大這個方法就不太適用了!!!
總結:處理問題,一定要學會“曲線救國”!!!謝謝!!!
