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)
上一篇 2022年7月24日 上午11:16
下一篇 2022年7月24日 上午11:16


相关推荐

  • UE4 GamePlay架构学习篇[通俗易懂]

    UE4 GamePlay架构学习篇[通俗易懂]附带上激活成功教程版安装说明:1.安装jdk。百度搜索jdk,如果安装了则跳过。2.解压下载的.zip文件。双击打开。syntevo_keygen.jar文件。

    2022年10月4日
    5
  • 【Redis】内存回收策略

    【Redis】内存回收策略【Redis】内存回收策略

    2022年4月25日
    50
  • 令人比较失落的IT圈子-关于华为裁员

    令人比较失落的IT圈子-关于华为裁员早在几年前就有人说过程序员在35岁以后如果不做管理就很难混了,如今由于近日的华为事件被炒得沸沸扬扬,显然让这多年前人们的猜测变成了现实,我今年也正好到了这个该“退休”的年龄,所以就想趁机悔恨一番。首先,澄清的一点就是,我并无意诋毁这个IT行业,我只是希望大家可以更加清除的认清这个行业。       什么叫做管理,在程序员的思维里,做管理其实很简单,就是从写代码到不写代码,哪怕是写PPT,只要不写

    2022年7月25日
    35
  • 反射型xss偷取cookie(本地验证)

    反射型xss偷取cookie(本地验证)原理反射型xss为危害之一就是:用户在登录的情况下点击了黑客发送的链接,就会导致该网址的cookie泄露,导致帐号被黑客登录。

    2022年5月10日
    55
  • 实现ORACLE和SQL Server连接

    实现ORACLE和SQL Server连接

    2021年7月30日
    80
  • Vue项目关于eslint

    Vue项目关于eslint  新公司的Vue项目没有配置eslint,虽然平时coding的时候都会按照eslint的标准去写,但是没有统一的配置后期项目代码review的时候总还是不太方便。  Vue的项目配置eslint还是很简单的。它属于依赖插件中的一种,可以像安装其他插件一样在命令行用npminstalleslint-g安装,也可以修改package.json文件去更新项目的依赖包,重新跑一遍npm…

    2022年6月18日
    30

发表回复

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

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