• oracle LOB类型


    Oracle预定义了4种大对象类型,它们是BEILE、BLOB、CLOB、NCLOB。

    BFILE:我们可以把大的二进制对象存储在数据之外,BFILE存放在数据库中,存放的是文件指针(file locator),该指针指向数据之外的操作系统文件,数据实际存放在操作系统中,bfile是只读的,不能修改,不参与数据库的事务。
    BLOB用于存储非结构化的二进制数据,最长可达128TB,数据存储在数据库中。
    CLOB存放数据库字符集(database character set data)格式的字符数据,最大长度可达128TB,数据存储在数据库中。clob数据类型通过LOB定位器存储在表列中,实际的CLOB数据存储在独立的表空间中。
    NCLOB功能和CLOB一样,只是NCLOB用于存放统一编码国家字符集(Unicode National Character Set)数据。


    LOB 定位器(LOB Locators)就是指向LOB数据的指针。
    处理LOB数据的方法有很多种,通常通过DBMS_LOB包来检索或操作LOB数据。
    open() 打开LOB,close() 关闭LOB,append() 将源LOB中的内容追加到目标LOB,copy()从源LOB中的一部分或者全部数据复制到目标LOB,erase()删除LOB中全部或部分内容,trim() 将LOB值减少到指定的长度,read()从LOB中读取数据,write()写入数据, compare ()比较两个同种数据类型的LOB的部分或全部值是否相同,getlength() 获取LOB的长度,fileopen()打开文件,fileclose()关闭文件,fileexits()检查文件的存在性。

    一个例子:

    --建立学生论文表:

    create table  student_paper (
    student_name   varchar2(20),
    paper CLOB
    );

    insert into student_paper (student_name,paper)
    values ('王晶',EMPTY_CLOB( ) );
    commit;

    -- EMPTY_CLOB()是oracle内置的函数,创建一个空的LOB定位器

    ---PL/SQL块:实现的功能是,向lob定位器中写入数据missunderstand。

    DECLARE
        v_clob CLOB;
    BEGIN
        select  paper
            into v_clob
            from student_paper
            where student_name ='王晶'
            for update;
        dbms_lob.OPEN(v_clob,dbms_lob.lob_readwrite);
        dbms_lob.WRITE(v_clob,3,1,'mis');
        dbms_lob.WRITEAPPEND(v_clob,20,'understandfssddseshhhhh');—wirteappend() 在后面附加写入数据
        dbms_lob.CLOSE(v_clob);
        COMMIT;
        EXCEPTION
        when others then
        dbms_output.put_line('FAILED');
        ROLLBACK;
    END;

    --读取LOB数据

    DECLARE
             vclob2 CLOB;
            v_out  varchar2(1000);
            V_read_length NUMBER;
    BEGIN
            select paper
                into vclob2
                from student_paper
                where student_name ='王晶';
            V_read_length :=13;   
            DBMS_LOB.READ(vclob2,V_read_length,1,v_out);
            DBMS_OUTPUT.PUT_LINE(v_out);
            DBMS_OUTPUT.PUT_LINE(length(v_out));
            DBMS_OUTPUT.PUT_LINE('HI,I am  PL/SQL');
    END;
    -- 函数解释:
    procedure read( 要读取的定位器, 要读取的字节数, 开始读取操作的偏移量, 存储读操作结果的缓冲区);
    procedure  write(要写入的lob定位器,写入lob中的字节数,指定开始操作的偏移量,指定写操作的缓冲区)

  • 相关阅读:
    发送邮件(公共方法)
    Des加密解密(公共方法)
    星期几以及周,月份天数的计算(共用方法)
    生成随机字符(公共方法)
    MD5函数(公共方法)
    字符串的截取(公共方法)
    AES加密解密
    日期选择控件
    ios CAF音频转换为MP3
    iOS中获取各种文件的目录路径和文件
  • 原文地址:https://www.cnblogs.com/happinessqi/p/3349661.html
Copyright © 2020-2023  润新知