首页 > 运维 > linux运维 > 正文

oracle字段精度修改,oracle number类型增加精度

蓮花仙者
发布: 2025-07-10 12:28:01
原创
392人浏览过

大家好,又见面了,我是你们的朋友全栈君。

在将Oracle数据库迁移到SQL Server时,遇到了如下图所示的错误:

oracle字段精度修改,oracle number类型增加精度

经过调查,发现问题出在某些表的NUMBER类型没有设置精度上。解决方案是修改表结构,增加精度。具体操作如下:

考虑到有些表可能有多个字段未设置精度,因此我们采用以下方法来实现。

–分割函数

度加剪辑
度加剪辑

度加剪辑(原度咔剪辑),百度旗下AI创作工具

度加剪辑63
查看详情 度加剪辑
create or replace type type_split as table of varchar2(4000);
/
<p>create or replace function test_split(p_list VARCHAR2, p_sep VARCHAR2) return type_split
PIPELINED IS
l_idx PLS_INTEGER;
v_list VARCHAR2(32767) := p_list;
begin
LOOP
l_idx := instr(v_list, p_sep);
IF l_idx > 0 THEN
PIPE ROW(substr(v_list, 1, l_idx - 1));
v_list := substr(v_list, l_idx + length(p_sep));
ELSE
PIPE ROW(v_list);
EXIT;
END IF;
END LOOP;
RETURN;
end test_split;
/
登录后复制

–修改表增加精度的存储过程

create or replace procedure changefield
(tablename in varchar2,
fieldname in varchar2
) as
CURSOR c1
IS
SELECT <em> FROM table(test_split(fieldname,','));
begin
execute immediate 'create table temp_table as select </em> from '|| tablename;
execute immediate 'DELETE FROM '|| tablename;
FOR x IN c1
LOOP
execute immediate 'alter table ' || tablename || ' modify ' || x.column_value || ' NUMBER(38, 0)';
END LOOP;
execute immediate 'INSERT INTO '|| tablename||' SELECT * FROM temp_table';
execute immediate 'DROP TABLE temp_table';
end;
/
登录后复制

–执行示例,需要手动修改参数,参数为表名和字段名,字段名可以是一个也可以是多个,多个字段以逗号分隔

exec changefield('A25','A2517,SORT');
exec changefield('A36','A3617');
登录后复制

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/27f0681af3b501d1a5e313be097da0a6 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c

以上就是oracle字段精度修改,oracle number类型增加精度的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号