使用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

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