
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型怎么备份等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)