Oracle中Blob轉換成Clob

來源:互聯網
上載者:User

標籤:

假如tab表中的c_xml欄位原來是blob類型,我們要將其轉換為clob類型,如果表中有資料的話,是無法直接通過alert語句去修改的。通過以下方法可以將blob類型的欄位改為clob類型。

首先在oracle中建立一個function,代碼如下:

--先建立Blog轉換為Clob的function
CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS    v_clob    CLOB;    v_varchar VARCHAR2(32767);    v_start   PLS_INTEGER := 1;    v_buffer  PLS_INTEGER := 32767;BEGIN    DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);    FOR i IN 1 .. CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOP        v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in,                                                              v_buffer,                                                              v_start));        DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);        DBMS_OUTPUT.PUT_LINE(v_varchar);        v_start := v_start + v_buffer;    END LOOP;    RETURN v_clob;END BlobToClob;

 

然後建立備份表,以防資料丟失。代碼如下:

create table tab2 AS SELECT * FROM tab;

刪除表中blob列,添加clob列。代碼如下:

-- 刪除c_xml列 
alter table tab drop column c_xml;

-- 添加c_xml列, 類型為clob
alter table tab add c_xml clob;

最後將備份出去的資料恢複回來。代碼如下:

--在命令模式下執行如下代碼, 將備份到tab2中的c_xml中的資料恢複到tab中來
DECLAREtask_id NUMBER;sour_blob BLOB;dest_clob CLOB;userRow tab2%rowtype; cursor userRows is select * from tab2; BEGIN for userRow in userRows loop   task_id := userRow.n_task_id;  sour_blob := userRow.c_xml;  dest_clob := blobtoclob(sour_blob);   UPDATE tab SET c_xml = dest_clob WHERE n_task_id = task_id;  COMMIT; end loop; END;

 

Oracle中Blob轉換成Clob

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.