博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle中Blob转换成Clob
阅读量:4214 次
发布时间:2019-05-26

本文共 1489 字,大约阅读时间需要 4 分钟。

转载:http://blog.sina.com.cn/s/blog_59ca2c2a0101ilv1.html

假如tab表中的c_xml字段原来是blob类型,我们要将其转换为clob类型,如果表中有数据的话,是无法直接通过alert语句去修改的。通过以下方法可以将blob类型的字段改为clob类型。

首先在oracle中创建一个function,代码如下:

--先创建Blog转换为Clob的functionCREATE 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列, 类型为clobalter 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;
你可能感兴趣的文章
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
ACM经历总结[转载]
查看>>
C/C++文件操作[转载]
查看>>
常见的排序算法
查看>>
hdu 3460 Ancient Printer(trie tree)
查看>>
KMP求前缀函数(next数组)
查看>>
KMP
查看>>
poj 3863Business Center
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>
Swift cell的自适应高度
查看>>
【linux】.fuse_hiddenXXXX 文件是如何生成的?
查看>>
【LKM】整合多个LKM为1个
查看>>
【Windows C++】调用powershell上传指定目录下所有文件
查看>>
Java图形界面中单选按钮JRadioButton和按钮Button事件处理
查看>>
小练习 - 排序:冒泡、选择、快排
查看>>