ORACLE的NUMBER和LONG类型分别支持最大多少的值

ORACLE的NUMBER和LONG类型分别支持最大多少的值,第1张

LONG存可变长字符串最大可以存2GB

NUMBER可以存正数、负数、零、定点数、以及精度为38的浮点数

NUMBER(P,S)

其中P是精度,指总的数字数,可以为1至38不等;S指小数位数,即

小数点右边的数字数,它可以为-84至127不等

又见“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”!

以前写过的一篇博文中提到了出现“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”的原因,并给出了原因和解决方法,在这里回顾一下。(详见 当遇到“数据大小超出此类型的最大值”和“仅可以为插入 LONG 列的 LONG 值赋值”时 )

当时的环境:

数据库:Oracle 9i

数据库字段类型:varchar2(4000)

输入汉字:大于1000字

原因:

我的数据库字符集应该是UTF-8的,对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时 *** 作2个LONG字段,所以报错。

当时的解决办法:建议减小字段长度或拆分。实在需要的,可以转而采用CLOB字段类型。

情况字段的长如和插入数据的长度

我是用exp导出的,是Oracle 9数据库,由于是远程 *** 作,不能使用pl/sql develeper工具,只好用命令 *** 作,我用的就是exp username/password,导出数据的时候不报错,等我导完之后远程ftp到我本地导入我本地库的时候,这个表里的值就是空的了。

oracle的long不同于开发语言中的long字段。oracle的long是可变字符型的,最大可到2GB,跟clob差不多,都是属于不能直接 *** 作的类型,想在pl/sql中 *** 作估计就不用想了

以上就是关于ORACLE的NUMBER和LONG类型分别支持最大多少的值全部的内容,包括:ORACLE的NUMBER和LONG类型分别支持最大多少的值、oracle 错误: 尽可以为插入LONG列的LONG值赋值、oracle数据库中表字段类型有Long型怎么备份等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9704216.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存