oracle数据库插入异常仅能绑定要插入 LONG 列的 LONG 值

       今天在做数据批量操作时,出现一个字段超长错误。原本想着一个字段长度4000个字符足够了,但在实际操作过程中发现还是有数据超过了限制,从而引发错误:

 

       查找相关资料发现,这个异常是指用户向数据库执行插入数据操作时,数据的字段值过长,正常varchar2类型的最大长度为4000字节,当长度超过2000--4000(最大值)之间的时候,oracle会自动将该字段值转为long型的,插入操作失败。

       将varchar2类型转换为clob或者blob即可解决问题。但是直接变更字段类型却报错:ora22858 数据类型的变更无效;

解决过程:

1. alter table T_INVOICE add name1 clob; //新增一列
2. update T_INVOICE set name1=invoice_image; //将原来的列的值复制的新列
3. alter table T_INVOICE drop column invoice_image; //删除原来的列
4. alter table T_INVOICE rename column name1 to invoice_image; //将新列重新命名

posted @ 2022-08-18 20:32  duguyan  阅读(1049)  评论(0)    收藏  举报