oracle plsql修改数据时ORA-01480: STR 绑定值的结尾 Null 字符缺失 的错误解决办法。

时间:2020-12-01 23:29:48

最近做了一个改变数据库某一字段的值,这个值比之前输入的字数要多,开始的时候,直接在PL/SQL Developer中用常规的select ...for update 的方法修改,可是每次都几个字都会报错“ORA-01480: STR 绑定值的结尾 Null 字符缺失”,我以为是定义的字段长度不够长,不过看了下是varchar(3000),我修改后的远远达不到,看来不是这个问题.


后来在网上搜了下,总结了两种方法.(在此感谢那些无私奉献的人!!!)

首先确认你的修改后的字段值是否真的超过表字段定义长度,注意:中文占用字节长度的问题;根据字符集编码的不同,在oracle里有可能占2或者3个字节。

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

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

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

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

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

长度超过3000:

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

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


我的解决方法是第二种,update语句.