zoukankan      html  css  js  c++  java
  • 使用以下代码可以插入BLOB类型的图片或pdf文档到Oracle数据库中:

    drop table IMAGE_LOB;
    CREATE TABLE IMAGE_LOB (
       T_ID VARCHAR2 (5) NOT NULL,
       T_IMAGE BLOB NOT NULL
       );
        
    --插入blob文件 
    CREATE OR REPLACE DIRECTORY IMAGES AS '/home/oracle/';
    CREATE OR REPLACE NONEDITIONABLE PROCEDURE IMG_INSERT(TID      VARCHAR2,
                                                          FILENAME VARCHAR2) AS
        F_LOB BFILE;
        B_LOB BLOB;
    BEGIN
        INSERT INTO IMAGE_LOB
            (T_ID, T_IMAGE)
        VALUES
            (TID, EMPTY_BLOB()) RETURN T_IMAGE INTO B_LOB;
        F_LOB := BFILENAME('IMAGES', FILENAME);
        DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
        DBMS_LOB.LOADFROMFILE(B_LOB, F_LOB, DBMS_LOB.GETLENGTH(F_LOB));
        DBMS_LOB.FILECLOSE(F_LOB);
        COMMIT;
    END;
     /
    BEGIN
        IMG_INSERT('1','1.jpg');
        IMG_INSERT('2','2.jpg');
        IMG_INSERT('3','1.pdf');
     END;
    /
    select length(t_image) from image_lob; --可以查看该字段占用的空间大小
    SELECT * FROM image_lob;
    ----------- 导出blob文件
    DECLARE
        l_file   utl_file.file_type;
        --l_lob    BLOB;
        l_offset INT := 1;
        l_amount INT := 32767;
        l_len    INT;
        l_buffer RAW(32767);
    BEGIN
        FOR cur IN (SELECT t_image,t.t_id FROM image_lob t) LOOP
             
                    l_file := utl_file.fopen('IMAGES', cur.t_id||'.jpg', 'wb', 32767);
            l_len  := dbms_lob.getlength(cur.t_image);
                    l_offset := 1;  
                     
            WHILE l_offset < l_len LOOP
                dbms_lob.read(cur.t_image, l_amount, l_offset, l_buffer);
                utl_file.put_raw(l_file, l_buffer, TRUE);
                l_offset := l_offset + l_amount;
            END LOOP;
                     
            utl_file.fclose(l_file);
                     
        END LOOP;
    END;
    /
  • 相关阅读:
    webservice接口示例(spring+xfire+webservice)
    SoapUI 测试接口演示
    XML 文档结构必须从头至尾包含在同一个实体内
    Oracle url编码与解码
    【中山市选2010】【BZOJ2467】生成树
    synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解
    自己动手写搜索引擎
    PopupWindow底部弹出
    JAVA集合类型(二)
    双卡手机发送短信
  • 原文地址:https://www.cnblogs.com/ios9/p/13048186.html
Copyright © 2011-2022 走看看