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

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

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

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

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

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

–分割函数

create or replace type type_split as table of varchar2(4000);/

create or replace function test_split(p_list VARCHAR2, p_sep VARCHAR2) return type_splitPIPELINED ISl_idx PLS_INTEGER;v_list VARCHAR2(32767) := p_list;beginLOOPl_idx := instr(v_list, p_sep);IF l_idx > 0 THENPIPE ROW(substr(v_list, 1, l_idx - 1));v_list := substr(v_list, l_idx + length(p_sep));ELSEPIPE ROW(v_list);EXIT;END IF;END LOOP;RETURN;end test_split;/

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

create or replace procedure changefield(tablename in varchar2,fieldname in varchar2) asCURSOR c1ISSELECT  FROM table(test_split(fieldname,','));beginexecute immediate 'create table temp_table as select  from '|| tablename;execute immediate 'DELETE FROM '|| tablename;FOR x IN c1LOOPexecute 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类型增加精度的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/32477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 05:25:16
2025,海天味业还不能轻松
下一篇 2025年11月4日 05:27:18

相关推荐

发表回复

登录后才能评论
关注微信