`
huze104
  • 浏览: 97173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle Blob转Clob和Varchar2

阅读更多

create or replace FUNCTION blob_to_clob (blob_in IN BLOB) 
RETURN CLOB 
IS 
v_clob CLOB; 
v_varchar VARCHAR2(4000); 
v_start PLS_INTEGER := 1; 
v_buffer PLS_INTEGER := 4000; 
g_nls_db_char varchar2(60); 
BEGIN 
 select userenv('LANGUAGE') into g_nls_db_char from dual; 
 
 if DBMS_LOB.GETLENGTH(blob_in) is null then
        return empty_clob();  
 end if;
 
 DBMS_OUTPUT.put_line('TEST:' || CEIL(DBMS_LOB.GETLENGTH(blob_in)));
 
 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(utl_raw.convert(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));

 DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar); 

 v_start := v_start + v_buffer; 
 END LOOP; 
 
 --DBMS_OUTPUT.put_line(v_varchar);
 
 RETURN v_clob; 
 
end blob_to_clob; 

create or replace FUNCTION blob_to_varchar (blob_in IN BLOB) 
RETURN VARCHAR2 
IS 

v_varchar VARCHAR2(4000); 
v_start PLS_INTEGER := 1; 
v_buffer PLS_INTEGER := 4000; 
 
BEGIN 
 --select userenv('LANGUAGE') into g_nls_db_char from dual; 
 
 if DBMS_LOB.GETLENGTH(blob_in) is null then
        return empty_clob();  
 end if;
 
 DBMS_OUTPUT.put_line('TEST:' || CEIL(DBMS_LOB.GETLENGTH(blob_in)));
 
 --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(utl_raw.convert(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));

 --DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar); 

 v_start := v_start + v_buffer; 
 END LOOP; 
 
 --DBMS_OUTPUT.put_line(v_varchar);
 
 RETURN v_varchar; 
 
end blob_to_varchar; 

 

分享到:
评论

相关推荐

    oracle(blob转换为clob)

    UTL_RAW.CAST_TO_VARCHAR2

    深入浅析mybatis oracle BLOB类型字段保存与读取

    一、BLOB字段  BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写。其中BLOB是用来存储大量二进制... TAB_NAME VARCHAR2(64 BYTE) not null,

    LOB2Table:将 Oracle CLOB、BLOB、BFILE 或 VARCHAR2 中的 CSV 数据作为表进行查询-开源

    LOB2Table 是一组 Oracle PL/SQL 流水线函数,允许您像普通表一样查询 CLOB、BLOB、BFILE 或 VARCHAR2 中的 CSV 或固定列数据存储。 有关详细说明,请参阅 Wiki。

    Oracle P/L SQL实现文件压缩、解压功能

    as_SubDir in VarChar2, as_FileName in VarChar2 )Return Blob; --获取压缩流的文件清单 Function f_GetFileList( as_ZippedBlob in Blob, as_Encoding in VarChar2 Default Null )...

    关于oracle中clob字段查询慢的问题及解决方法

    最近在用oracle的过程中用到了对blob字段模糊查询的问题,对...select * from table_name where utl_raw.cast_to_varchar2(column) like ‘%oracle%'; 但是却报如下的错误: 在这之后作了修改: select * from tab

    Oracle 数据类型

    Oracle的数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的值小于... 8、ORACLE其实也支持INTEGER,FLOAT,DOUBLE,VARCHAR,最好用ORACLE自身的NUMBER 和 VARCHAR2

    Oracle P/L SQL实现FTP上传、下载功能

    AccountInfo VarChar2(1000), TransferMethod Char(1), --A: ASCII, E: EBCDIC, I: IMAGE TransferOption Char(1), LocalDirectory VarChar2(30), LastReply VarChar2(32767 ) ); ...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 导出的数据格式包括纯文本和DMP文件两种。以纯...

    oracle使用dblink高速复制表数据的动态存储过程

    本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。 具体请参阅程序,可根据自已需要进行修改。 参数说明: CREATE OR REPLACE PROCEDURE ...

    oracle数据库修复

    支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB...

    Oracle 数据库查找替换工具

    可以在整个数据库中查找某个字符串。 支持 CHAR,VARCHAR NVARCHAR,CLOB,BLOB字段类型。 可批量查找,批量替换。 http://db.okof.net/dbr/

    赤兔Oracle数据库恢复软件 v11.6.zip

    5.支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i ) , BINARY FLOAT, BINARY DOUBLE (10g ) 6.全面支持LOB字段:支持CLOB、NCLOB和BLOBCLOB...

    北大青鸟Oracle教程集2

    Oracle主要 Oracle主要 数据类型 4-1 Character 数据类型 Number 数据类型 Date 数据类型 Raw 和 Long Raw 数据类型 LOB 数据类型 Oracle 主要数据类型 4-2 Character 数据类型 ― Char ― Varchar2 ― Long Number ...

    北大青鸟Oracle教程集1

    Oracle主要 Oracle主要 数据类型 4-1 Character 数据类型 Number 数据类型 Date 数据类型 Raw 和 Long Raw 数据类型 LOB 数据类型 Oracle 主要数据类型 4-2 Character 数据类型 ― Char ― Varchar2 ― Long Number ...

    Oracle Database 11g初学者指南--详细书签版

    1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 过程 13 1.5.4 函数 13 1.5.5 包 13 1.6 ...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储对象 1.5.1 视图 1.5.2 触发器 1.5.3 过程 1.5.4 函数 1.5.5 包 1.6 Oracle Database 11g的其他重要内容 1.6.1 索引 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    oracle支持的数据类型

    VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes DATE 日期(日-月-...

    数据库设计规范(3).doc

    " " "VARCHAR2(4) " " "VARCHAR2(8) " " "VARCHAR2(10) " " "VARCHAR2(16) " " "VARCHAR2(20) " " "VARCHAR2(30) " " "VARCHAR2(40) " " "VARCHAR2(50) " " "VARCHAR2(100) " " "VARCHAR2(200) " " "VARCHAR2(400) ...

    oracle知识简介

    VARCHAR2(n) 变长字符串 最大长度为4000字节 没有默认长度必须指定 NCHAR(n) 用于存储定长为n的Unicode字符最大长度为2000字节 NVARCHAR2(n) 用于存储变长为n的Unicode字符串 最大长度为4000字节 LONG 存储最大长度...

Global site tag (gtag.js) - Google Analytics