一种“ ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 ”错误的解决方法
在使用oracle的过程中,出现了ORA-01461的错误。按照网上的方法
1、字段过长,将varchar修改成clob
2、更换驱动
均没有解决。后来慢慢摸索找出了解决方法。
虽然网上方法没有解决问题,但是也给了我一些启发:有一个字段值插入的时候,长度超过了4000,为4092个英文字符。
要插入的字段为:process_code clob;
首先我们在navicat上更新了一条无用数据,发现更新不成功,navicat报错。
然后我们直接将4092字符串手动添加到数据库,发现是可以的。那应该就是navicat工具的问题,更新操作时不支持这么长的字符串。
既然数据库存储没有问题,那应该问题应该还是出现在代码上。现将原sql贴上,是一个批量插入:
INSERT INTO fgg_sales_invoice_det ( process_code, coil_no, produce_det_code ) <foreach collection="paymentList" item="item" index="index" separator="union all"> select #{item.process_code,jdbcType=CLOB}, #{item.coil_no,jdbcType=VARCHAR}, #{item.pro_det_code,jdbcType=VARCHAR} from dual </foreach>
现修改成如下:
begin <foreach collection="paymentList" item="item" index="index" separator=";"> INSERT INTO fgg_sales_invoice_det ( process_code, coil_no, produce_det_code ) values ( #{item.process_code,jdbcType=CLOB}, #{item.coil_no,jdbcType=VARCHAR}, #{item.pro_det_code,jdbcType=VARCHAR} ) </foreach> ;end;
问题解决,特此记录一下。

浙公网安备 33010602011771号