oracle插入CLOB类型超过4000个字符报ORA-01704:string literal too long解决方法

不建议将超长的字段保存数据库,对于必须要求保存在数据的场景,分享一个解决方法(基于Mybatis持久层开发);
解决方法:通过声明变量的方式将数据赋予CLOB变量,通过引用变量进行插入。
Mybatis的XML写法如下:
DECLARE
   <if test="initData != null and initData != ''">
       INIT_DATA_CLOB_DATA CLOB := #{initData, jdbcType = CLOB};
   </if>
   <if test="finalData != null and finalData != ''">
       FINAL_DATA_CLOB_DATA CLOB := #{finalData, jdbcType = CLOB};
   </if>
   <if test="formContent != null and formContent != ''">
       FORM_CONTENT_DATA CLOB := #{formContent, jdbcType = CLOB};
   </if>
BEGIN
UPDATE TTRANSFER_MOBILE_LOG
   <set>
       <if test="initData != null and initData != ''">
           INIT_DATA_CLOB = INIT_DATA_CLOB_DATA,
       </if>
       <if test="finalData != null and finalData != ''">
           FINAL_DATA_CLOB = FINAL_DATA_CLOB_DATA,
       </if>
       <if test="formContent != null and formContent != ''">
           FORM_CONTENT = FORM_CONTENT_DATA,
       </if>
   </set>
WHERE LOG_ID = #{id};
END;
这里仅提供修改的示例,插入只需要将修改语句改为插入语句即可;

你可能感兴趣的:(数据库,oracle)