一种“ 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;

  

问题解决,特此记录一下。

 

posted @ 2020-03-26 09:53  tank073  阅读(4443)  评论(0)    收藏  举报