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

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

--先创建Blog转换为Clob的function
CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB ASv_clob    CLOB;v_varchar VARCHAR2(32767);v_start   PLS_INTEGER := 1;v_buffer  PLS_INTEGER := 32767;
BEGINDBMS_LOB.CREATETEMPORARY(v_clob, TRUE);FOR i IN 1 .. CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOPv_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中来
DECLARE
task_id NUMBER;
sour_blob BLOB;
dest_clob CLOB;
userRow tab2%rowtype;
cursor userRows is select * from tab2;
BEGINfor userRow in userRows looptask_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相关推荐

  1. oracle中blob转换,BLOB转换为CLOB的函数(oracle中执行)

    BLOB转换为CLOB的函数(oracle中执行) CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS v_cl ...

  2. oracle中如何转换成数字,如何在Oracle中实现数字进制转换完全版?

    以下内容包括: 1).提供两个进制转换包 2).提供进制转换的一些简便方法 3).提供进制转换的不同方法的性能评估 1.两个进制转换包 1)包PKG_DM_BASE_CONV(推荐) CREATE O ...

  3. oracle 字符转整数,Oracle中字符串转换函数小数转法

    Oracle中字符串转换函数小数转法 类别:Oracle数据库   作者:码皇   来源:薛凯博客     点击: Oracle中字符串转换函数小数转法 to_char()函数的字符串转换格式归纳如下 ...

  4. oracle中行列转换总结

    oracle中行列转换 1.行列转换包括以下六种情况: 2. 列转行 2.1 UNION ALL 2.2 MODEL 2.3 COLLECTION 2.4 UNPIVOT 3. 行转列 3.1 AGG ...

  5. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  6. oracle Blob保存方式,关于文件保存到Oracle中BLOB字段的方法及例子

    关于文件保存到Oracle中BLOB字段的方法及例子 ------------------------------------------- public class FileOpClass { pu ...

  7. js 中日期 转换成时间戳 例如2013-08-30 转换为时间戳

    js 中日期 转换成时间戳 例如2013-08-30 转换为时间戳 热心网友  2018-11-18 js字符串转化时间戳可以使用自带函数 Date(要转化的时间字符串)先转化为Date类型,之后再将 ...

  8. Oracle任意字符串转换成拼音首字母简写

    Oracle任意字符串转换成拼音首字母简写 需求目标 将"拼音简码"四个字转换成拼音首字母简写PYJM 实现代码 CREATE OR REPLACE FUNCTION FUN_GE ...

  9. oracle中转换函数,Oracle中的转换函数

    Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...

最新文章

  1. centos 6.8 搭建svn服务器
  2. (转)Android基础类之BaseAdapter
  3. 前端学习(2664):vue3.0的todolist控制完成和未完成
  4. mysql 停止服务内存_服务器莫名的内存高占用 导致 MySQL 停止运行问题
  5. C++ 多继承之如何调用私有成员
  6. CRM系统-----学员管理系统---admin自定义开发3
  7. Open3d之八叉树(Octree)
  8. c how to program; 习题:3.25 编写一个利用循环打印表格数据的程序.
  9. SQL ltrim() 和 rtrim() 函数
  10. echarts改变颜色属性的demo
  11. Linux系统下安装es中ik分词器详解
  12. 对抗训练+FGSM, FGM理解与详解
  13. html5微信mp3播放器代码,[微信音频播放器] html5 audio 制做的微信播放器
  14. 运营的新手先简单认识一下ASO
  15. DruidDataSource
  16. 顶尖领导者的52条法则!
  17. 负雪明烛开通公众号啦~ 欢迎关注「负雪明烛」
  18. lc滤波器是利用电感的感抗_LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...
  19. 水平面上两直线垂直,且斜率都存在,分别为k1,k2,则k1·k2=-1
  20. 用CSS 实现水波扩散的特效

热门文章

  1. 计算机毕设(附源码)JAVA-SSM化妆品销售网站
  2. SAP CRM培训Uwinpro
  3. 十大报表工具 BI 产品深度点评-----BI报表行业专家干货分享----一文读懂报表与BI的行业现状----最新常用BI报表工具对比科普帖
  4. 作业成本法中的成本动因分析----by AMT 邓为民
  5. ubuntu安装过程中提示: the path is not vaild path to the gcc binary等gcc路径不对和kernel不存在?
  6. 一个题目引发的数组和指针复习
  7. WATCH ME 2007
  8. 德国Vue.js2终极开发教程(含Vue路由和Vuex)-Max-专题视频课程
  9. APP下载链接在微信被屏蔽了 无法打开的解决方案
  10. 现在大多数人们用的前端框架有哪些【大盘点】