使用ibatis在Oracle中clob存储超过4000长度的数据时报错ORA-01461

Oracle存储的字段长度是有限制的,常见的varchar2的保存长度最大为4000,对一些业务字段值可能超过4000的情况,可以使用clob类型进行存储,但是如果直接将大字符串保存到clob的列中,会提示错误:“ORA-01461: 只有在将值插入数据类型为 LONG 的列时,才可以绑定一个 LONG 值”。

1.Java下插入:变量参数必须用#,使用javaType=java.lang.String,jdbcType=CLOB

<!-- 插入详情信息 -->  
<insert id="saveInvoicInfoData" parameterClass="InvoicInfoEntity">
  insert into dm_invoice_info(typeid,time,textstr,name,userid)
  values(#typeId#,sysdate,#textStr,javaType=java.lang.String,jdbcType=CLOB#,#name#,#userId#)
</insert>  

2.C#下插入:变量参数必须用#,使用dbType=clob

<!-- 插入详情信息 -->  
<insert id="saveInvoicInfoData" parameterClass="InvoicInfoEntity">
  insert into dm_invoice_info(typeid,time,textstr,name,userid)
  values(#typeId#,sysdate,#textStr,dbType=CLOB#,#name#,#userId#)
</insert>  

通过在ibatis里这样的配置,数据库插入时会自动转成clob

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章