CREATE OR REPLACE FUNCTION C2B (b IN CLOB default empty_clob())
RETURN BLOB
-- typecasts BLOB to CLOB (binary conversion)
IS
res BLOB;
b_len number := dbms_lob.getlength(b) ;
dest_offset1 NUMBER := ;
src_offset1 NUMBER := ;
amount_c INTEGER := DBMS_LOB.lobmaxsize;
blob_csid NUMBER := DBMS_LOB.default_csid;
lang_ctx INTEGER := DBMS_LOB.default_lang_ctx;
warning INTEGER;
BEGIN if b_len > then
DBMS_LOB.createtemporary (res, TRUE);
DBMS_LOB.OPEN (res, DBMS_LOB.lob_readwrite);
DBMS_LOB.convertToBlob (res,
b,
amount_c,
dest_offset1,
src_offset1,
blob_csid,
lang_ctx,
warning
);
else
select empty_blob() into res from dual ;
end if ;
RETURN res; -- res is OPEN here
END C2B;

1,首先利用to_clob函数把varchar2字段转成 clob字段。

2  利用上面函数将clob转成blob。

说白了就是  c2b(to_clob(varchar2字段))

create or replace Function Blob_To_Varchar (Blob_In In Blob) Return clob
Is
V_Varchar Varchar2(32767);
V_Varchar1 Varchar2(32767);
V_Start Pls_Integer := 1;
V_Buffer Pls_Integer := 4000;
Begin If Dbms_Lob.Getlength(Blob_In) Is Null Then
Return '';
End If;
V_Varchar1 := '';
--return to_char(Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer));
For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop
--当转换出来的字符串乱码时,可尝试用注释掉的函数
--V_Varchar := Utl_Raw.Cast_To_Varchar2(Utl_Raw.Convert(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
V_Varchar := Utl_Raw.Cast_To_Varchar2(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start));
V_Varchar1 := V_Varchar1 || V_Varchar; V_Start := V_Start + V_Buffer;
End Loop; Return V_Varchar1; End Blob_To_Varchar;

1.首先执行上面的函数,返回的是个clob

2将clob转成varchar2

说白了 就是    to_char(Blob_To_Varchar(字段))

创建二个函数 然后就可以用了,如果说实现 数据库里面大字段的批量替换还是比较方便

update DR_RPT_REPORT_DATASOURCE
set data_sql =
c2b(to_clob((select replace(Blob_To_Varchar(data_sql),'XXX','XXX') from DR_RPT_REPORT_DATASOURCE where data_id
='XXXX' ))) where data_id = '' ;

原文在这:http://blog.csdn.net/wbo112/article/details/9041575

oracle中varchar2字段存入blob字段及blob转成varchar2的更多相关文章

  1. Oracle中的列转行实现字段拼接用例

    文章目录 Oracle中的列转行实现字段拼接 场景 在SQL使用过程中经常有这种需求:将某列字段拼接成in('XX','XX','XX','XX','XX','XX' ...)做为查询条件. 实现 s ...

  2. Oracle中,如何将String插入到BLOB类型字段

    1,String插入到BLOB类型字段,(这里的字符串以生成的XML为例): String XML = document.asXML();  //使用dom4j写成的xml是String类型,记得st ...

  3. Oracle中已有数据的字段类型修改

    创建测试表 create table t_person( id varchar2(200) primary key, name varchar2(200), address varchar2(200) ...

  4. oracle中使用sql查询时字段为空则赋值默认

    转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  5. oracle中查看所有表和字段以及表注释字段注释

    获取表:select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 selec ...

  6. 在JSP中获取oracle中的时间戳类型的字段并显示

    在oracle中有一种特殊的时间显示类型——Timestamp时间戳 通常我们将当前时间转化为时间戳的语法如下: select cast (sysdate as timestamp ) from du ...

  7. 在oracle中,select语句查询字段中非纯数字值

    最近,将原来的数字符字段转换为数字时,总报错误:无效数字. 如何找出其中哪些是非数字字符的记录?比较麻烦的事.下面是用Oracle DB自带的函数translate可以找出来的 1.创建测试表 Cre ...

  8. Oracle中查看所有表和字段以及表注释.字段注释

    获取表: select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 sele ...

  9. Oracle中查看所有表和字段

    获取表字段: select * from user_tab_columns where Table_Name='用户表' order by column_name 获取表注释: select * fr ...

  10. Oracle中如何用SQL检测字段是否包括中文字符

    用Oracle的编码转换的函数Convert实现,测试后可行. SQL> select *  2    from (select 'abcd' c1 from dual  3          ...

随机推荐

  1. C# Builder

    如下: class Program { static void Main(string[] args) { ).BuildB(2.1).BuildUp(); Console.Read(); } } p ...

  2. uvaoj 133 - The Dole Queue(逻辑,环形队列数数)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. postman使用感言

    这段时间接口测试一直使用的postman,一款谷歌接口测试插件,感受如下 优点: 1.对于中小型公司来说应该是够用的,特别是一键接口环境切换,一键设置header,作为一般的接口测试来说已经很不错了, ...

  4. python 定位文件目录

    经常有引用文件的地方,所以整理了一下如何定位文件目录的方法 定位当前文件的目录 import os file_path = os.path.dirname(__file__) 定位当前文件的父目录 i ...

  5. cookie的介绍和自动化中cookie的操作

    1 cookie是什么? cookie: 1. Cookie是一小段的文本信息:格式:python中的字典(键值对组成) 2. Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客 ...

  6. lesson 22 by heart

    lesson 22 by heart on end = continuously 连续不断地 know/learn sth by heart 记忆sth falter: speak hesitantl ...

  7. lr 常用操作

    lr脚本编写语法: web_add_cookie();:服务器注入cookies lr_save_string("网址或其他","参数2");:一个保存函数,它 ...

  8. Memcache的客户端连接系列(一) Java

    声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南. 关键词: Memcached  客户端 Java Java连接池 Java客户端示例 用户的弹性云服务器已安装 ...

  9. c#调用c++dll(c++界面在c#显示)____制作dll

    1.c++dll含界面,以摄像头dll为例: 1.直接在c++SDK上调试运行成功,生成dll. 2.留一个调用接口(格式如下,写在cpp文件中,即函数体): extern "C" ...

  10. TensorFlow安装解惑

    本文整理自网络,若有侵犯请告知. 1.安装环境 目前TensorFlow社区推荐的环境是Ubuntu, 但是TensorFlow同时支持Mac,Windows上的安装部署. 2.关于GPU版本 因为深 ...