dbms_lob使用之-基础
在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使用之-基础的更多相关文章
- 转:ORACLEERP开发基础之EBS开发基础
转自:http://blog.itpub.net/8781091/viewspace-1012244/ [内容导航] 第1页:开发工具安装 第2页:增加数据块 第3页:注册表单FORM 第4页:注册请 ...
- Oracle PL/SQL语句基础学习笔记(上)
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...
- java基础知识总结8(数据库篇1)
一. Oracle的安装(windowXP.win7.Linux)和卸载 1.1 Oracle的安装 1.1.1 在WindowsXP.Win7下安装 第一:解压win32_11gR2_databas ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
随机推荐
- C++ C# python 中输入输出函数对比
C++ cin>>"nihao";cout<<"nihao"<<endl; C# System.Console.ReadLi ...
- I/O控制的主要功能
主要功能: 1. 解释用户的I/O系统调用.将用户I/O系统调用转换为I/O控制模块认识的命令模式. 2. 设备驱动.根据得到的I/O命令,启动物理设备完成指定的I/O操作. 3. 中断处理.对 ...
- Python作业之三次登陆锁定用户
作业之三次登陆锁定用户 作业要求如下: 1. 输入用户名和密码 2. 认证成功提示欢迎信息 3. 认证失败三次锁定用户 具体代码如下: 方法1: import os#导入os模块 if os.path ...
- C语言程序设计第三次作业——选择结构(一)
(一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...
- HTML中鼠标滚轮事件onmousewheel处理
滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...
- 混合式应用开发之Cordova+vue(1)
一.Cordova创建应用 cordova create oneApp Cordova创建应用出错 Cordova安装时不能使用cnpm 应该使用npm,cnpm虽然快但是后期出的错绝对比这省下来的时 ...
- Firebird数据库相关操作
Firebird常用SQL 一.分页写法小例: 1 select first 10 templateid,code,name from template ; 2 select first 10 ski ...
- random 模块
import stringprint (random.random()) # 0-1之间选浮点数print (random.randint(0,99,))#0-99之间选任意整数print (rand ...
- c++ Lambda表达式待修改
C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问. Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lam ...
- Android 学习笔记一 自定义按钮背景图
入门学到的一些组件都是比较规矩的,但在实际应用中,我们需要更多特色的组件,例如一个简单的Button,所以我们必须要自定义它的属性. 遇到的问题:用两张图片来代替按钮,分别表示点击前后 解决方法:用I ...