`
catastiger
  • 浏览: 138494 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oracle blob clob flob操作

    博客分类:
  • DB
阅读更多
--插入bfile­

create or replace procedure insert_book(filename varchar2) as ­

book_file  bfile := NULL;­

bookExists boolean := false;­

begin­

book_file  := bfilename('BOOK_TEXT', filename);­

bookExists  := dbms_lob.fileexists(book_file) = 1;­

­

if bookExists then­

  insert into my_book_files values ((select count(*) from my_book_files) + 1 , book_file);­

  dbms_output.put_line('Insert sucess! file : ' || filename);­

else­

  dbms_output.put_line('Not exists! file : ' || filename);­

   end if;­

exception­

  when dbms_lob.noexist_directory then­

       dbms_output.put_line('Error: ' || sqlerrm);  ­

  when dbms_lob.invalid_directory then­

       dbms_output.put_line('Error : ' || sqlerrm);­

  when others then­

       dbms_output.put_line('Unkown Error : ' || sqlerrm);       ­

end insert_book;­



­

create or replace procedure insertPDF(fileName varchar2) is ­

        fileLoc bfile;­

        nID number;­

        nPDFSize integer;­

        bFileExists boolean := false;­

begin­

     fileLoc := bfilename('PDFDIR',filename);­

     bFileExists := dbms_lob.fileexists(fileLoc) = 1;­

     if bFileExists = false then­

        dbms_output.put_line(fileName || ' not exists');­

        return;­

     end if;­

     ­

     nPDFSize := dbms_lob.getlength(fileLoc);­

     dbms_output.put_line('the length of ' || fileName || ' is ' || nPDFSize);­

     select count(*) + 1 into nID from PDFTable;­

     insert into PDFTable(ID,Pdffile) ­

            values (nID, fileLoc);­

exception ­

  when dbms_lob.noexist_directory then­

       dbms_output.put_line('Error: ' || sqlerrm);  ­

  when dbms_lob.invalid_directory then­

       dbms_output.put_line('Error : ' || sqlerrm);­

  when others then­

       dbms_output.put_line('Unkown Error : ' || sqlerrm);­

end;       ­



­

--插入 blob­

CREATE OR REPLACE procedure insertImg(imgName varchar2) is­

        v_file_loc bfile;­

        v_image blob;­

        nID number;­

        nImgSize integer;­

bFileExists boolean := false;­

begin­

      v_file_loc := bfilename('IMAGEDIR', imgName);­

      bFileExists := dbms_lob.fileExists(v_file_loc) = 1;­

      if bFileExists = false then­

       dbms_output.put_line(imgName || ' not exists');­

       return;­

      end if;­

      nImgSize := dbms_lob.getlength(v_file_loc);­

      dbms_output.put_line(imgName ||' size is ' || nImgSize);­

      dbms_output.put_line('Now Inserting empty image row');­

      select count(*) + 1 into nID from imagetable;­

      insert into imagetable(ID, image)­

             values (nID, empty_blob)­

             returning image into v_image;­

      DBMS_LOB.FILEOPEN (v_file_loc);­

      dbms_output.put_line('Open file');­

      dbms_lob.loadfromfile(v_image, v_file_loc, nImgSize);­

      DBMS_LOB.FILECLOSE(v_file_loc);­

      commit;­

exception­

          when others then­

               dbms_output.put_line('Error happen! ' || sqlerrm);­

        DBMS_LOB.FILECLOSE(v_file_loc);­

end insertImg;­



­

--=================================================­

SQL> create table view_sites_info (­

  2   site_id  number(3),­

  3   audio  blob default empty_blob(),­

  4   document clob default empty_clob(),­

  5   video_file  bfile default null­

  6  );­

表已创建。­

SQL> commit;­

提交完成。­

­

SQL> @e:\writelob­

PL/SQL 过程已成功完成。­

SQL> desc view_sites_info;­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

SITE_ID                                            NUMBER(3)­

AUDIO                                              BLOB­

DOCUMENT                                           CLOB­

VIDEO_FILE                                         BINARY FILE LOB­

SQL> select document from view_sites_info where site_id = 100;­

DOCUMENT                                                                        ­

--------------------------------------------------------------------------------­

This is a writing example                                                       ­

SQL> desc view_sites_info­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

SITE_ID                                            NUMBER(3)­

AUDIO                                              BLOB­

DOCUMENT                                           CLOB­

VIDEO_FILE                                         BINARY FILE LOB­

SQL> insert into blobtest values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'));­

insert into blobtest values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'))­

                                *­

ERROR 位于第 1 行: ­

ORA-00932: 数据类型不一致 ­

­

SQL> desc BFILETEST­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

ID                                                 NUMBER(3)­

FNAME                                              BINARY FILE LOB­

SQL> insert into BFILETEST values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'));­

已创建 1 行。­

­

SQL> get E:\insertimg­

  1  create or replace procedure img_insert (­

  2     tid   varchar2,­

  3     filename  varchar2) as ­

  4     F_LOB   BFILE;­

  5     B_LOB  BLOB;­

  6  begin­

  7   insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;­

  8   F_LOB := bfilename('images', filename);­

  9   dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);­

10   dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));­

11   dbms_lob.fileclose(F_LOB);­

12   commit;­

13* end;­

SQL> r­

  1  create or replace procedure img_insert (­

  2     tid   varchar2,­

  3     filename  varchar2) as ­

  4     F_LOB   BFILE;­

  5     B_LOB  BLOB;­

  6  begin­

  7   insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;­

  8   F_LOB := bfilename('images', filename);­

  9   dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);­

10   dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));­

11   dbms_lob.fileclose(F_LOB);­

12   commit;­

13* end;­
分享到:
评论

相关推荐

    Oracle导出Clob,Blob工具

    2. **Oracle.ManagedDataAccess.dll**:这是Oracle官方提供的Managed Driver,它是一个.NET Framework库,允许开发者在.NET环境中直接访问Oracle数据库,支持Clob和Blob操作。 3. **SqlSugar.dll**:这是一个流行的...

    oracle Blob转换Clob

    ### Oracle Blob转换Clob #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob ...

    oracle(blob转换为clob)

    在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...

    Oracle导出Clob,Blob工具版本2

    Oracle数据库在存储大对象(BLOB和CLOB)时提供了强大的功能,但处理这些类型的数据进行导入导出可能会带来挑战。"Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB...

    oracle Blob Clob 大数处理 代码

    以上是Oracle Blob和Clob处理的一些核心知识点,实际应用中还需要结合具体的编程语言(如Java, PL/SQL等)和框架来编写代码实现文件上传下载、大数操作等功能。在处理大对象时,需要充分考虑性能、存储和安全等因素...

    sql server中的image类型的数据导出到oracle的clob字段中

    SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...

    ORACLE中CLOB字段转String类型

    - Oracle还提供了一些内置函数可以直接操作CLOB。 - `SUBSTR`函数可以用来提取CLOB的一部分作为字符串返回。 ```sql SELECT SUBSTR(clob_column, 1, 32767) AS str_column FROM table_name; ``` 3. **使用TO...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据...综上所述,`CLOB`和`BLOB`都是在Oracle中存储图片的有效方法,具体选择哪种方式取决于应用场景和需求。`ClobAndBlob`工具提供了一种便捷的方式来体验和比较这两种方式的使用效果。

    oracle中的Blob和Clob区别

    ### Oracle中的BLOB和CLOB的区别 在Oracle数据库中,`BLOB`(Binary Large Object)和`CLOB`(Character Large Object)是用于存储大量数据的两种特殊数据类型。这两种类型都属于`LOB`(Large Object)类别,主要...

    Hibernate对BLOB CLOB操作

    同时,确保数据库支持高效的BLOB和CLOB操作,比如Oracle的BFILE类型或使用流式处理。 总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    oracle blob 字段 读写 delphi

    本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如DBExpress或ADO。DBExpress是Delphi内置的一个轻量级数据库访问框架,而...

    oracle blob图片导出工具

    批量导出oracle bolb图片到本地文件

    load blob clob

    本篇文章将围绕"load blob clob"这一主题,结合anysql免费工具合集,详细介绍如何在Oracle中操作Blob和Clob字段,并分享一些实用技巧。 首先,Blob数据类型在Oracle中代表Binary Large Object,它可以存储任意形式...

    mysql和Oracle在对clob和blob字段的处理

    - 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...

    oracle blob转文件读取

    根据提供的部分代码片段,我们可以进一步了解如何在C#中操作Oracle数据库中的Blob数据。 ```csharp using System; using System.Data.OracleClient; using System.IO; namespace OraclePDF { public class ...

    JDBC中操作Blob、Clob等对象

    ### JDBC中操作Blob、Clob等对象 #### 一、简介 在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob...

    jdbc 操作oracle blob数据

    jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...

    Oracle bolb转换Base64 CLOB.txt

    Oracle slq bolb转换Base64 CLOB

Global site tag (gtag.js) - Google Analytics