一.修改某字段類型爲clob類型。(增長clob臨時字段->複製原字段值->刪除原字段->修改臨時字段名爲原字段名)oracle
執行命令:alter table BOSP_HTJS_BG_CONTRACT_INFO modify BG_EXPLAIN CLOB;orm
oracle版本問題,即便沒數據也會報錯:ORA-22858:invalid alteration of datatypeci
--第一步:添加一個clob類型的字段
alter table BOSP_HTJS_BG_CONTRACT_INFO add (bg_explain_bak clob);
--第二部:將原來字段的值拷貝到新建的clob字段
update BOSP_HTJS_BG_CONTRACT_INFO set bg_explain_bak = bg_explain ;
--第三步:刪除原來的字段
alter table BOSP_HTJS_BG_CONTRACT_INFO drop column bg_explain;
--第四步:將新建的clob字段的名字修改成原來的字段的名字
alter table BOSP_HTJS_BG_CONTRACT_INFO rename column bg_explain_bak to bg_explain;同步
二.修改物料行字段精度爲3。字段中有數據。(複製表->清空字段->同步值->清理表)io
alter table bosp_htjs_material_information modify taxrate number(16,3);
有數據會報錯:ORA-01440: column to be modified must be empty to decrease precision or scaletable
--1.create table BOSP_HTJS_MATERIAL_BAK as select * from BOSP_HTJS_MATERIAL_INFORMATION;
select * from BOSP_HTJS_MATERIAL_BAK;
--2.update BOSP_HTJS_MATERIAL_INFORMATION MI set MI.FEED_NUM = null;
select * from BOSP_HTJS_MATERIAL_INFORMATION;form
--3.alter table BOSP_HTJS_MATERIAL_INFORMATION modify FEED_NUM number(16,3);date
--4.update BOSP_HTJS_MATERIAL_INFORMATION MI set MI.FEED_NUM = (
select MB.FEED_NUM from BOSP_HTJS_MATERIAL_BAK MB where MB.id = MI.id
);select
--5.truncate table BOSP_HTJS_MATERIAL_BAK;drop table BOSP_HTJS_MATERIAL_BAK;
總結
總結:若是數據少,不破壞原表的結構,能夠用第二種複製表的方式操做。若是不得不刪除原字段再修改類型的話,那仍是用第一種吧。