关于oracle plsql数据库ORA-01480: STR 绑定值的结尾 Null 字符缺失 的问题解决办法。

在oracle数据库给表增加数据的时候,遇到了数据字节长度超过2000的问题,字段定义的最大长度为4000字节,但是数据的长度还没有超过4000字节。

plsql报错  “ ORA-01480: STR 绑定值的结尾 Null 字符缺失”

问题:首先将数据长度确定出来(可以用word或者notepad++)。注意:中文占用字节长度的问题;根据字符集编码的不同,在oracle里有可能占2或者3个字节。

其次查看定义的字段长度,我的字段长度为vachar2(4000),貌似varchar2最长就是4000,好奇的可以去查查这方面的问题。

长度没有超过4000:既然没有超过4000字节那么问题就是oracle储存过程的bug了。在不同的情况下,有的就可以正常的用plsql操作表储存数据,有的就会报错01480。

既然你找到这里来了,那就是你遇到了第二种情况  plsql出现bug了。

解决办法1:将数据压缩,就是去掉多余的空格,要是2000字节多一点的情况下 就可以用这个办法解决。

解决办法2:用sql语句插入:编辑sql    insert  into  tablename values (null,null,null,...);或者是 update 语句都可以将未超过4000字节的数据储存到表里去。

解决办法3:找另一台电脑试一下(不建议)

长度超过4000:

用压缩的办法去掉多余的空格,如果长度小于4000了,就可以用方法2 试一下。

压缩之后还是大于4000,就要注意要修改表的字段的类型了,

摘自百度知道:

VARCHAR2(size) 可变长度的字符串,其最大长度为size个字节;size的最大值是4000,而最小值是1;你必须指定一个VARCHAR2的size;
NVARCHAR2(size) 可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的size;
NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分最大为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认值,即等同于NUMBER(5);
LONG 可变长度的字符数据,其长度可达2G个字节;
DATE 有效日期范围从公元前4712年1月1日到公元后4712年12月31日
RAW(size) 长度为size字节的原始二进制数据,size的最大值为2000字节;你必须为RAW指定一个size;
LONG RAW 可变长度的原始二进制数据,其最长可达2G字节;
CHAR(size) 固定长度的字符数据,其长度为size个字节;size的最大值是2000字节,而最小值和默认值是1;
NCHAR(size) 也是固定长度。根据Unicode标准定义
CLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节
NCLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集
BLOB 一个二进制大型对象;最大4G字节
BFILE 包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节.

oracle字段类型(专业回答)


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值