Oracle Long型別轉換為Clob型別

maojinyu發表於2011-11-17

INSERT INTO sammy_test_clob
SELECT TO_LOB (report_xml)
FROM qm_s_report
WHERE report_name = 'Sammy';


TO_LOB函式和LONG型別一樣,限制有很多。簡單的說,TO_LOB一般只用在CREATE TABLE或INSERT TABLE語句後面的子查詢中。在其他地方使用會報錯,比如UPDATE語句。

這還不是最大的問題,最大的問題在於,TO_LOB函式似乎並沒有真正的將LONG型別轉化為LOB資料型別。個人感覺,Oracle只是對LONG型別做了一些處理,使之可以存放到一個LOB型別中去。

[@more@]

LONG: 可變長的字串資料,最長2G,LONG具有VARCHAR2列的特性,可以儲存長文字一個表中最多一個LONG列
  LONG RAW: 可變長二進位制資料,最長2G
  CLOB: 用來儲存單位元組的字元資料
  NCLOB: 用來儲存多位元組的字元資料
  BLOB: 用於儲存二進位制資料
  BFILE: 儲存在檔案中的二進位制資料,這個檔案中的資料只能被只讀訪。但該檔案不包含在資料庫內。
  
  CLOB,NCLOB,BLOB都是內部的LOB(Large Object)型別,最長4G,沒有 LONG只能有一列的限制

  我要儲存圖片、文字檔案、Word檔案各自最好用哪種資料型別?
  --BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的型別,因此建議用LOB。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9907339/viewspace-1056373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章