数据库中有一个字段设置为clob类型在插入数据库的时候遇到这样的错误:
ORA-01461:仅能绑定要插入 LONG 列的 LONG 值
解决办法:
之前我mybatis中的语句是这样写的(这是一个oracle的批量插入语句):
<insert id="addResults" parameterType="java.util.List" databaseId="Oracle">
INSERT INTO tableName("ID","SID","DETAIL")
<foreach collection="list" item="item" separator ="UNION ALL">
select
#{item.id, jdbcType=VARCHAR} ,#{item.sid, jdbcType=VARCHAR}
#{item.detail, jdbcType=CLOB}
from dual
</foreach>
</insert>
这样就会一直报错,但是改成下面这样的方式就没问题了:
<insert id="addResults" parameterType="java.util.List" databaseId="Oracle">
begin
<foreach collection="list" item="item" separator =";">
INSERT INTO tableName("ID","SID","DETAIL")
VALUES(
#{item.id, jdbcType=VARCHAR} ,#{item.sid, jdbcType=VARCHAR}
#{item.detail, jdbcType=CLOB}
)
</foreach>
;end;
</insert>
具体好像是因为用 from dual 的方式去查询如果是clob字段会自动转为long类型造成的。