`
fcm915
  • 浏览: 111036 次
  • 性别: Icon_minigender_1
  • 来自: 泰安
社区版块
存档分类
最新评论

blob_to_clob and cob_to_blob and long_to_blob

阅读更多

CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB
    AS
    v_clob    CLOB;
    v_varchar VARCHAR2(32767);
    v_start PLS_INTEGER := 1;
    v_buffer PLS_INTEGER := 32767;
    tmp_num number;
    BEGIN
        DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
        tmp_num := CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer);
        if tmp_num > 0 then --防止传入的BLOB为NULL或长度为0时引发错误
          FOR i IN 1..tmp_num
          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);
             v_start := v_start + v_buffer;
          END LOOP;
        end if;
        RETURN v_clob;
    END blob_to_clob;

 

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

create or replace function c2b( c IN CLOB) return BLOB
IS
      pos       PLS_INTEGER  := 1;
      buffer    RAW( 32767 );
      res       BLOB;
      lob_len   PLS_INTEGER  := DBMS_LOB.getLength( c );
    BEGIN
      DBMS_LOB.createTemporary( res, TRUE );
      DBMS_LOB.OPEN( res, DBMS_LOB.LOB_ReadWrite );
 
      LOOP
        buffer := UTL_RAW.cast_to_raw( DBMS_LOB.SUBSTR( c, 16000, pos ) );
 
        IF UTL_RAW.LENGTH( buffer ) > 0 THEN
          DBMS_LOB.writeAppend( res, UTL_RAW.LENGTH( buffer ), buffer );
        END IF;
 
        pos := pos + 16000;
        EXIT WHEN pos > lob_len;
      END LOOP;
 
      RETURN res; -- res is OPEN here
    END c2b;

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

CREATE   OR   REPLACE   FUNCTION   CONVERTTOBLOB(SRC   IN   LONG)   RETURN   BLOB   IS  
          D_OFFSET       INTEGER   :=   1;  
          S_OFFSET       INTEGER   :=   1;  
          B_CSID           NUMBER   :=   0;  
          LANG_C           INTEGER   :=   0;  
          WARN               INTEGER   :=   0;  
          LEN                 INTEGER   :=   0;  
          B                     BLOB;  
      BEGIN  
          DBMS_LOB.CREATETEMPORARY(LOB_LOC   =>   B,   CACHE   =>   TRUE);  
          LEN   :=   DBMS_LOB.GETLENGTH(TO_CLOB(SRC));  
          DBMS_LOB.CONVERTTOBLOB(DEST_LOB           =>   B,  
                                                        SRC_CLOB           =>   TO_CLOB(SRC),  
                                                        AMOUNT               =>   LEN,  
                                                        DEST_OFFSET     =>   D_OFFSET,  
                                                        SRC_OFFSET       =>   S_OFFSET,  
                                                        BLOB_CSID         =>   B_CSID,  
                                                        LANG_CONTEXT   =>   LANG_C,  
                                                        WARNING             =>   WARN);  
          RETURN   B;  
      EXCEPTION  
          WHEN   OTHERS   THEN  
              DBMS_OUTPUT.PUT_LINE(SQLERRM);  
      END;  
  /  

分享到:
评论

相关推荐

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    标题"Clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle"暗示了这个压缩包包含的资源是关于使用Java操作Oracle数据库中的CLOB和BLOB字段的示例代码。这个压缩包可能包含了一个名为`clob-blob.java`...

    CLOB、BLOB___CLOB与BLOB的区别

    CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。它是 SQL 类型,用于存储字符大对象(Character Large Object),将字符大对象存储为数据库表某一行中...

    oracle(blob转换为clob)

    在示例代码中,`blob_to_clob`函数首先创建了一个临时的CLOB变量`v_clob`。然后,通过`DBMS_LOB.GETLENGTH`获取BLOB的总长度,计算出需要处理的次数`tmp_num`,确保每次处理不超过32767个字符,这是`VARCHAR2`类型的...

    DELPHI的CLOB和BLOB存取处理.zip_DELPHI的CLOB和BLOB存取处理_hallzgz

    在数据库编程领域,CLOB(Character Large Object)和BLOB(Binary Large Object)是用于存储大量文本和二进制数据的数据类型。在DELPHI中,处理这些大型对象时需要特殊的技术和策略。本篇文章将深入探讨DELPHI中...

    jdbc_blob_clob.rar

    标题“jdbc_blob_clob.rar”暗示了这个压缩包文件包含的内容与Java Database Connectivity (JDBC) 中处理Blob和Clob对象相关的知识。Blob是Binary Large Object的缩写,用于存储大块二进制数据,如图片、音频或视频...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    rtn = clob.getSubString((long) 1, (int) clob.length()); return rtn; } else if ("weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB".equals(in.getClass().getName())) { Method method = in.getClass()....

    qrtz_blob_triggers.sql

    quartz-2.2.3版本集群部署方式,需要创建的11张表的sql 文件,很多文章没有分享,一定要注意版本,不同的版本sql脚本不同

    blob_oracle.rar_blob_blob oracle_c++ oracle blob_oracle_oracle

    标签中的“c++__oracle_blob”强调了使用C++进行BLOB操作,而“oracle_blob_oracle”则表明了这是关于Oracle数据库的BLOB操作。 总之,Oracle的BLOB类型提供了处理大量二进制数据的能力,而C++的OCI库为开发者提供...

    sqlite3_blob_test.zip

    这包括`sqlite3_open()`打开数据库连接,`sqlite3_exec()`或`sqlite3_prepare_v2()`执行SQL语句,以及`sqlite3_blob_open()`, `sqlite3_blob_write()`, `sqlite3_blob_read()`等处理BLOB数据的函数。在插入BLOB时,...

    blob-pxa270.rar_UP_blob_blob pxa270_pxa270 blob_pxa270 bootload

    标题中的"blob-pxa270.rar_UP_blob_blob pxa270_pxa270 blob_pxa270 bootload"暗示了这是一份与UP Board(一个基于Intel PXA270处理器的开发板)相关的固件或者引导加载程序(bootloader)。"UP Blob"通常指的是为UP...

    jsp1.rar_jsp blob_jsp 图片_mysql blob_图片 MySQL

    `jsp1.rar_jsp blob_jsp 图片_mysql blob_图片 MySQL`这个标题和描述指向了一个具体的场景:使用JSP(JavaServer Pages)从MySQL数据库中读取存储为BLOB(Binary Large Object)类型的图片数据。 首先,我们来理解...

    pbcomm_blob_modi_recieve_PB串口发送指令_

    "pbcomm_blob_modi_recieve_PB串口发送指令_"这个标题暗示了我们讨论的是关于如何在PowerBuilder 9.0(PB9.0)中实现串口数据的发送和接收。下面我们将详细探讨相关的知识点。 首先,我们需要了解PowerBuilder(PB...

    Blob_Tracking_Modules.zip_blob_opencv_tracking_zip

    在"Blob_Tracking_Modules.doc"文档中,可能包含了关于如何在OpenCV中实现Blob检测和跟踪的具体方法、代码示例以及相关算法的详细解释。常见的Blob跟踪算法有Kalman滤波器、Mean Shift、CamShift等,它们利用概率...

    QT-Mysql-Blob.zip_mysql blob_qt blob 文件_qt blob类型_qt的blob

    首先,BLOB是一个用于存储大块二进制数据的数据类型,包括四种变体:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,它们的区别主要在于能存储的最大数据量。在MySQL中,你可以创建一个包含BLOB字段的表来存储这些非结构化...

    blob_demo.cpp

    g++ -o blob_demo blob_demo.cpp -I /home/bigmarshal/Documents/deep_learning/caffe/include/ -D CPU_ONLY -I /home/bigmarshal/Documents/deep_learning/caffe/.build_release/src/ -L /home/bigmarshal/...

    Python库 | auto_blob_saver-0.1-py3.8.egg

    《Python库auto_blob_saver-0.1-py3.8.egg详解》 Python作为一门强大且广泛应用的编程语言,拥有丰富的第三方库资源。在众多的Python库中,"auto_blob_saver"是一个值得一提的工具,它为开发者提供了一种便捷的方式...

    blob_append:BLOB_APPEND功能文档

    在本案例中,"blob_append:BLOB_APPEND功能文档"指的是一个特定的数据库函数,它允许用户向BLOB字段追加数据,而不仅仅是覆盖原有内容。 `BLOB_APPEND`函数可能是一个自定义的SQL函数,或者某些数据库管理系统(如...

    blob.zip_blob_blob detection

    在本案例中,“blob.zip_blob_blob detection”可能是一个包含代码和数据的压缩包,旨在实现基于Harris角点检测的Blob检测算法。Harris角点检测是一种流行的方法,用于在图像中寻找局部特征,这些特征对平移、缩放和...

    Python库 | textblob_de-0.3.0-py2.py3-none-any.whl

    6. **安装与使用**:使用`pip`可以直接安装`textblob_de`的轮子文件,命令为`pip install path/to/textblob_de-0.3.0-py2.py3-none-any.whl`。安装完成后,就可以在Python代码中导入并使用`textblob_de`,享受它带来...

    PyPI 官网下载 | core_module_blob_host_app-1.0.0.tar.gz

    标题中的"PyPI 官网下载 | core_module_blob_host_app-1.0.0.tar.gz"揭示了我们正在处理一个从Python Package Index (PyPI) 下载的软件包。PyPI是Python社区官方的第三方软件包仓库,它允许开发者发布、分享和安装...

Global site tag (gtag.js) - Google Analytics