斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值

          Posted on 2010-01-14 21:48 斷點 閱讀(403) 評論(0)  編輯  收藏 所屬分類: Oracle
          Caused by: java.sql.BatchUpdateException: ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值
          我在系統的一個頁面上加載一個.xml文件時,出現了這個錯誤。

          原因:

          當插入數據的長度在1000、2000內,就會拋出這樣的錯誤。


          解決方法:

          思路:將存儲的字符串補上空格,讓其超過2000的長度即可,但僅限與緊急解決問題。
          1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
          2、在此.java文件的相應的方法里添加如下判斷:

              // 處理ora-1461問題(clob長度在1000-2000之間會出錯)
                  if (xml.length() >= 1000 && xml.length() <= 2000) {
                      xml = StringUtils.rightPad(xml, 2008);
                  }

           

          相關知識:

          LONG: 可變長的字符串數據,最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
          LONG RAW: 可變長二進制數據,最長2G
          CLOB:  字符大對象Clob 用來存儲單字節的字符數據
          NCLOB: 用來存儲多字節的字符數據
          BLOB: 用于存儲二進制數據
          BFILE: 存儲在文件中的二進制數據,這個文件中的數據只能被只讀訪。但該文件不包含在數據庫內。bfile字段實際的文件存儲在文件系統中,字段中存儲的是文件定位指針.bfile對oracle來說是只讀的,也不參與事務性控制和數據恢復。
          其中CLOB,NCLOB,BLOB都是內部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制。要保存圖片、文本文件、Word文件各自最好采用那種數據類型呢?BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。

          相關鏈接:http://www.aygfsteel.com/allen-zhe/archive/2008/05/06/198627.html


          posted @ 2009-04-18 13:01 斷點 閱讀(676) | 評論 (0)
          主站蜘蛛池模板: 交口县| 海安县| 无极县| 闸北区| 两当县| 醴陵市| 孙吴县| 开封县| 台南市| 秀山| 淮南市| 莱西市| 田东县| 凤翔县| 遂溪县| 汨罗市| 凉城县| 集贤县| 长白| 武功县| 田林县| 台安县| 崇文区| 衡东县| 满洲里市| 独山县| 濉溪县| 梧州市| 仙游县| 德阳市| 大兴区| 溧阳市| 郸城县| 雷山县| 当涂县| 浙江省| 重庆市| 康平县| 江油市| 韶山市| 双峰县|