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

oracle字段精度修改,oracle number类型增加精度oracle迁移到sqlserver时,报错-如下图,查找原因,发现是因为有些表number类型没有设精度导致的,解决方法如下,修改表结构加上精度,加上之后就可以了。考虑到有些表有多个字段没有设精度,所以采取以下方式实现。–split函数createorreplacetypetype_splitastableofvarchar2(4000);/createorreplace…

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

oracle迁移到sqlserver时,报错-如下图,

43d6fa1b32546de424aef32619f07040.png

查找原因,发现是因为有些表number类型没有设精度导致的,解决方法如下,修改表结构加上精度

,加上之后就可以了。考虑到有些表有多个字段没有设精度,所以采取以下方式实现。

–split函数

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_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 * FROM table(test_split(fieldname,’,’));

begin

execute immediate ‘create table temp_table as select *  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://javaforall.net/163898.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Snmp学习笔记

    Snmp学习笔记

    2021年12月1日
    45
  • 浅拷贝和深拷贝的方法java_jdg粗中有细

    浅拷贝和深拷贝的方法java_jdg粗中有细1.拷贝的引入(1)引用拷贝创建一个指向对象的引用变量的拷贝。例1:Teacherteacher=newTeacher(“Taylor”,26);Teacherotherteacher=teacher;System.out.println(teacher);System.out.println(otherteacher);输出结果:blog.Teacher@355da254bl

    2025年6月8日
    3
  • linux常用命令

    linux常用命令linux常用命令

    2022年4月25日
    43
  • Python二级考试试题汇总(史上最全)[通俗易懂]

    Python二级考试试题汇总(史上最全)[通俗易懂]Python二级考试试题(一)以下关于程序设计语言的描述,错误的选项是:APython语言是一种脚本编程语言B汇编语言是直接操作计算机硬件的编程语言C程序设计语言经历了机器语言、汇编语言、脚本语言三个阶段D编译和解释的区别是一次性翻译程序还是每次执行时都要翻译程序正确答案:C表达式1001==0x3e7的结果是:AfalseBFalseCtrueDTrue正确答案:B以下选项,不是Python保留字的选项是:AdelBpassC

    2022年6月23日
    24
  • mybatis-log-plugin激活码(注册激活)2022.02.05

    (mybatis-log-plugin激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~CJM5ZJBPHS-eyJsaWNlbnNlSWQiOi…

    2022年4月1日
    1.6K
  • 小米BL不解锁刷机「建议收藏」

    小米BL不解锁刷机「建议收藏」关于小米NOTE顶配近期解锁的问题中发现还有很多人不会用9008模式刷机,现出个简单教程方便米粉们救砖。硬件:小米NOTE顶配手机win10系统的电脑手机与电脑相连的数据线软件:老版本的miflash(版本号:2015.10.28。0)最新版本miflash最新解BL锁工具或者小米助手(用来装驱动)开发版6.17及以前的线刷包随便下一个一个你最终想刷的版本(推荐最新稳定版)…

    2022年4月30日
    166

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号