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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 获取新浪可转债t+0列表,附上python代码

    ​​​​​​​@classmethoddefget_page_convertibleBonds(cls,pageIndex,retry_count=10):url=”http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeDataSimple?page=%d&num=1000&sort=symbol&asc=1&node=h..

    2022年4月9日
  • Java static关键字与static{}语句块

    Java static关键字与static{}语句块目录直通车一、类的加载特性与时机1、 类加载的特性2、类加载的时机二、static的三个常用1、修饰成员变量2、修饰成员方法3、 静态块(static{})一、类的加载特性与时机在进入static之前,先补一下关于类的脑。1、 类加载的特性在JVM的生命周期里,每个类只会被加载一次。类加载的原则:延迟加载,能少加载就少加载,因为虚拟机的空…

    2022年7月17日
  • win10共享打印错误0x0000006_win10共享打印机出现错误代码0X0000000d怎么办 打印机无法打印的解决步骤…[通俗易懂]

    win10共享打印错误0x0000006_win10共享打印机出现错误代码0X0000000d怎么办 打印机无法打印的解决步骤…[通俗易懂]win10系统查找打印机提示错误代码0x0000000d怎么办?此问题解决非常简单,只要“添加打印机”即可,下面有详细的安装步骤,一起看看吧!错误代码0x0000000d的解决方法步骤1、点击win10系统的开始/控制面板/打印机;win10系统查找打印机提示错误0x0000000d的解决方法2、选择“添加打印机”;3、选择“添加本地打印机”,按一下步;4、选择“创建新端口”/选择“local…

    2022年5月14日
  • Java 链表结点插入

    Java 链表结点插入PS:链表是一种数据结构,而数据结构就是一种存放数据的方式。为什么需要链表?我们知道,数组也可以存储数据,那么为什么还需要链表呢?接下来,我们来看看数组和链表的区别:1、数组就像身上编了号站成一排的人,要找第10个人很容易,根据人身上的编号很快就能找到。但插入、删除慢,要往某个位置插入或删除一个人时,后面的人身上的编号都要变。当然,加入或删除的人始终末尾的也快。2、链表就…

    2022年4月30日
  • Linux重启nodejs

    Linux重启nodejs想要重启nodeserver进入相应的项目执行npmstop发现没用server仍然在,于是要杀掉相应进程1、ps-ef|grepnode查看node对应的pid,然后killpid,再进入对应项目npmstart2、如果以上方法不行可以这样:killnode或者kilallnode

    2022年10月18日
  • idea激活码永久有效-激活码分享

    (idea激活码永久有效)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html9A…

    2022年3月22日

发表回复

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

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