一、如果表中没有数据可以直接修改
--声明变量存储要查询的表中的列是否存在
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;