Oracle修改字段类型(精度)

一、如果表中没有数据可以直接修改

--声明变量存储要查询的表中的列是否存在
declare columnExistedCount number;
begin
    --从系统表中查询表中的列是否存在
    select count(1) into columnExistedCount from user_tab_columns t where t.table_name = upper('表名') and t.column_name = upper('字段名');  
	 if columnExistedCount = 1 then
      execute immediate
      'alter table 表名 modify (字段名 NUMBER(26,4))';
    end if;
end;
————————————————
版权声明:本文为CSDN博主「G-离殇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39649585/article/details/103241082

:二、表中有数据修改字段类型:

--1.备份原来的表

create table 表名_BAK as select * from 表名;

--2.删除原来表的数据

delete  from 表名;

--3.修改精度
--声明变量存储要查询的表中的列是否存在
declare columnExistedCount number;
begin
    --从系统表中查询表中的列是否存在
    select count(1) into columnExistedCount from user_tab_columns t where t.table_name = upper('表名') and t.column_name = upper('字段名');  
	 if columnExistedCount = 1 then
      execute immediate
      'alter table 表名 modify (字段名 NUMBER(26,4))';
    end if;
end;

--4.恢复数据

insert into 表名 select * from 表名_BAK;

--5.删除表
drop table 表名_BAK;

你可能感兴趣的:(oracle,数据库)