在Oracle中,存储在LOB中数据称为LOB的值,如使用Select   对某一LOB字段进行选择,则返回的不是LOB的值,而是该LOB字段的定位器(可以理解为指向LOB值的指针)。如执行如下的SQL语句: 

  DELCARE   

  AUDIO_INFO   BLOB; 

  BENGIN   

  SELECT   audio   INTO   AUDIO_INFO   FROM   view_sites_info   

    WHERE   site_id=100;   

  END;   

  

  存储在AUDIO_INFO变量中的就是LOB定位器,而不是LOB的值。而要对某一LOB的值进行访问和维护操作,必需通过其定位器来进行。DBMS_LOB包中提供的所有函数和过程都以LOB定位器作为参数。 



DBMS_LOB包中主要提供了以下几个过程供用户对内部LOB字段进行维护。 

  

  APPEND()将源LOB中的内容加到目的LOB中 

  COPY()从源LOB中复制数据到目的LOB   

  ERASE()删除LOB中全部或部分内容 

  TRIM()将LOB值减少到指定的长度 

  WRITE()向LOB   中写入数据 

  COMPARE()比较两个同种数据类型的LOB的部分或全部值是否相同 

  GETLENGTH()获取LOB的长度 

  READ()从LOB中读出数据 



1、 dbms_lob.append(

dest_lob IN OUT NOCOPY BLOB,

src_lob IN BLOB)

  dbms_lob.append(

               dest_lob IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,

               src_lob  IN CLOB CHRACTER SET dest_lob%CHARSET);

将源LOB变量的内容添加到目标LOB变量的尾部。

示例:dest_lob clob;

       src_lob clob;

       dbms_lob.append(dest_lob,src_lob);

2、 dbms_lob.close(lob_loc IN OUT NOCOPY BLOB/CLOB/BFILE)

关闭已经打开的LOB。

3、 dbms_lob.compare(

lob_1 IN BLOB/CLOB/BFILE,

lob_2 IN BLOB/CLOB/BFILE,

amount IN INTEGER:=4294967295,--要比较的字符数(CLOB),字节数(BLOB)

offset_1 IN INTEGER:=1,--lob_1的起始位置

offset_2 IN INTEGER:=1--lob_2的起始位置)

  比较两个LOB的内容。

4、dbms_lob.copy(

dest_lob IN OUT NOCOPY BLOB/CLOB/NCLOB,

src_lob IN BLOB/CLOB/NCOB,

amount IN INTEGER,

dest_offset IN INTEGER:=1,

src_offset IN INTEGER:=1)

  从src_lob中,以src_offset为起始位置,截取amount个字符/字节,放到dest_lob的dest_offset位置。

5、dbms_lob.createtemporary(

lob_loc IN OUT NOCOPY BLOB/DLOB/NCLOB,

cache IN BOOLEAN,

dur IN PLS_INTEGER:=10)

  在用户的临时表空间中,建立临时LOB。

  lob_loc:指定LOB定位符。

  Cache:是否将LOB读取到缓冲区

  Dur:指定何时清除临时LOB(10:会话结束时。12:调用结束时)。

6、dbms_lob.erase(

lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,

amount IN OUT NOCOPY INTEGER,--字符/字节数

offset IN INTEGER:=1—起始位置

)

  删除LOB变量的内容。

7、dbms_lob.fileclose(file_loc IN OUT NOCOPY BFILE)

关闭打开的BFILE定位符所指向的OS文件

8、dbms_lob.filecloseall关闭当前会话已经打开的所有BFILE文件。

9、dbms_lob.fileexists(file_loc IN BFILE) RETURN INTEGER

确定file_loc对应的OS文件是否存在,1:存在。0:不存在。

10、dbms_lob.filegetname(

file_loc IN BFILE,

dir_alias OUT varchar2,

filename OUT varchar2)

    获取BFILE定位符所对应的目录别名和文件名。

11、dbms_lob.fileisopen(file_loc IN BFILE) RETURN INTEGER

确定BFILE对应的OS文件是否打开。

12、dbms_lob.freetemporary(lob_lob IN OUT NOCOPY BLOB/CLOB/NCLOB)

释放在默认临时表空间中的临时LOB。

13、dbms_lob.fileopen(file_loc IN OUT NOCOPY BFILE,

Open_mode IN BINARY_INTEGER:file_readonly)

打开文件。

14、dbms_lob.getchunksize(lob_loc IN BLOB/CLOB/NCLOB) RETURN INTEGER

当建立包含CLOB/BLOB列的表时,通过指定CHUNK参数可以指定操纵LOB需要分配的字节数(数据库尺寸的整数倍)默认为数据块的尺寸。

15、dbms_lob.getlength(lob_loc IN BLOB/CLOB/BFILE/NCLOB) RETURN INTEGER

获取长度。

16、dbms_lob.instr(

Lob_loc IN BLOB/CLOB/NCLOB/BFILE,

Pattern IN RAW/VARCHAR2,

Offset IN INTERGER:=1,

Nth  IN INTEGER:=1) RETURN INTEGER;

  返回特定样式数据从LOB某偏移位置开始出现N次的具体位置。

17、dbms_lob.idopen(lob_loc IN BLOB/CLOB/BFILE) RETURN INT

确定LOB是否打开,打开:1,未打开:0。

18、dbms_lob.istemporary(lob_loc IN BLOB/CLOB/NCLOB) RETURN INTEGER

确定定位符是否为临时LOB。

19、dbms_lob.loadfromfile(

dest_lob IN OUT NOCOPY BLOB/CLOB,

src_file IN FILE,

amount IN INTEGER,

dest_offset IN INTEGER:=1,

src_offset IN INTEGER:=1)

  将BFILE的部分或全部内容复制到目标LOB变量。

20、dbms_lob.loadblobfromfile(

dest_lob IN OUT NOCOPY BLOB,

src_bfile IN BFILE,

amount IN INTEGER,

dest_offset IN OUT INTEGER,

src_offset IN OUT INTEGER)

将BFILE数据装载到BLOB中,并且在装载后取得最新的偏移位置。

21、dbms_lob.open(

lob_loc IN OUT NOCOPY BLOB/CLOB/BFILE,

open_mode IN BINARY_INTEGER)

打开LOB,open_mode(只读:dbms_lob.lob_readonly,读写:dbms_lob.lob_readwrite).

22、dbms_lob.read(

lob_loc IN BLOB/CLOB/BFILE,

amount IN OUT NOCOPY BINARY_INTEGER),--IN:要读取的字符数,     

                                           OUT:实际读取的字符数。

Offset IN INTEGER,

Buffer OUT RAW/VARCHAR2—存储数据的变量

)

将LOB数据读取到缓存区中(变量中)。

23、dbms_lob.substr(

Lob_loc IN BLOB/CLOB/BFILE,

Amount IN INTEGER:=32762,

Offset IN INTEGER:=1) RETURN RAW/VARCHAR2

与字符处理函数SUBSTR()使用方法一样。

24、dbms_lob.trim(

Lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,

Newlen IN INTEGER)

截断LOB到指定长度。

25、dbms_lob.write(

Lob_loc IN OUT NOCOPY BLOB/CLOB,

Amount IN BINARY_INTEGER,

Offset IN INTEGER,

Buffer IN RAW/VARCHAR2)

缓冲区数据写入到LOB中的特定位置。

26、dbms_lob.writeappend(

Lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,

Amount IN BINARY_INTEGER,

Buffer IN RAW/VARCHAR2)

   将缓冲区数据写到LOB尾部。

dbms_lob使用之-基础的更多相关文章

  1. 转:ORACLEERP开发基础之EBS开发基础

    转自:http://blog.itpub.net/8781091/viewspace-1012244/ [内容导航] 第1页:开发工具安装 第2页:增加数据块 第3页:注册表单FORM 第4页:注册请 ...

  2. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...

  3. java基础知识总结8(数据库篇1)

    一. Oracle的安装(windowXP.win7.Linux)和卸载 1.1 Oracle的安装 1.1.1 在WindowsXP.Win7下安装 第一:解压win32_11gR2_databas ...

  4. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  5. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  8. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  9. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

随机推荐

  1. SSM框架原理,作用及使用方法(非原创)

    原帖:地址https://blog.csdn.net/bieleyang/article/details/77862042 如有侵权请联系删除 作用: SSM框架是spring MVC ,spring ...

  2. rw 模板设置

    在编译的时候只有写出rw之后使用alt+/就可以将模板代码全部展现出来. rw读写模板代码: InputStream in = null; OutputStream out = null; try { ...

  3. Linux部分常用命令整理

    ./ 相当于双击 [oracle@linux01 ~]$ PWD 查看绝对路径 [oracle@linux01 ~]$ cd - 返回上一次操作的目录 [oracle@linux01 ~]$ cd . ...

  4. 使用 Nexus Repository Manager 搭建私有docker仓库

    使用容器安装Nexus3 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name nexus  -- ...

  5. C++并发高级接口:std::async和std::future

    std::async和std::future std::async创建一个后台线程执行传递的任务,这个任务只要是callable object均可,然后返回一个std::future.future储存 ...

  6. 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)

    分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...

  7. Ruby 2.x 命名参数特性简介

    我以前曾有一个梦想,就是我的爹是李嘉诚-,那个-,不是啦,我的梦想是ruby像ObjC,或是现在的swift那样给方法提供命名参数. 之前的ruby只能用hash来模拟这个行为,不过你没法很容易的定义 ...

  8. 深入Java虚拟机(4)——网络移动性

    一.软件应用程序发展的几个阶段 软件应用程序发展经历了如下几个阶段: 服务于多个终端用户的大型计算机系统 孤立的个人计算机上运行孤立的软件 客户机/服务器模式 分布式处理模式 内容服务模式(网络移动性 ...

  9. hbase大规模数据写入的优化历程

    业务背景:由于需要将ngix日志过滤出来的1亿+条用户行为记录存入Hbase数据库,以此根据一定的条件来提供近实时查询,比如根据用户id及一定的时间段等条件来过滤符合要求的若干行为记录,满足这一场景的 ...

  10. ios开发之xcode环境介绍

    作为一个刚入门ios开发的人来说,对于ios开发,对于xcode一切都是那么的陌生,那么我们如何开始我们的第一步呢?首先对开发的ide是必须要了解的,其实要对开发的语言要慢慢熟悉起来,今天我们先来熟悉 ...