问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

...利用DBMS_LOB包的函数插入和获取数据,怎么做?

发布网友 发布时间:2024-05-09 04:16

我来回答

1个回答

热心网友 时间:2024-06-11 06:28

先说一下怎么用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尾部。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
请问世事洞明皆学问,人情练达即文章是什么意思呀 世事洞明皆学问人情练达即文章意思 翡翠中的绿是怎么形成的翡翠中的绿是如何形成的 小学资格证音乐好考吗 关于心机套路深的句子 大宗交易体现在龙虎榜吗 一个大锅盖,怎样加两个高频头,收看同一个卫星呢?请高手指教。_百度知 ... 如何制作卫星锅 DNF 里有个任务不知道怎么做,请各位帮我看一下 国内怎么炒黄金期货? 歌词,笑我在雪中打滚的样子,只记得这一句,是一个女生说唱的,很伤感的... 5首关于冬天的儿歌, 帮助婴幼儿语言发展 小会造句用小会造句 教不会手艺长大会不会? "三会一课"存在哪些主要问题 头上有一块冷冻治疗血管瘤留下的疤痕,不长头发,这种情况能做植发不... 小白蘑菇怎么炒着好吃 :牛肉蘑菇浓汤,吃起来那叫一个香 电视剧《黑夜告白》剧情梗概 女性体检去南宁哪里好 南宁全身体检去那里比较好 “积善便是恶”怎么讲? 善事完成了一部分是善吗 新乡鸿盛铭郡二期售楼部电话是多少 新乡一建西雅图上院多少钱一平方? 新乡一建西雅图上院营销中心电话是多少? 新乡一建西雅图上院在哪里? 防盗门户内已包哑口,,想换防盗门会影响哑口吗? 死飞自行车大牙盘最大有多大,还有一条链条,大概需要多少钱能换上? word中出现空白页,如何删除? word空白页删除不了如何处理呢? 梦到黄色蝴蝶飞落在我手上'然後被它咬了,然後我打死它了 17款奔驰c200怎么保养 群主如何在QQ群设置和删除专属头衔? 如何为QQ群设置和删除女生专属群头衔? 如何为QQ群设置和删除群主专属头衔? 如何为QQ群设置和删除专属头衔? 2022德惠实验中考分数线 胃难受怎么回事吃饭也没胃口 颅咽管瘤术后多久可以喝酒 颅咽管瘤术后能吃用玉米做的面条吗 颅咽管瘤术后老鹅能吃吗 鼻子上有好多白色的小东西在毛孔里,能挤出来,鼻头上特别多,每次用粉刺... 导致现在国内离婚率越来越高的是什么原因? ...生活后不长就发烧感冒 有时候耳朵后面会有小疙瘩有点痒 最近皮肤有... HIV症状都对上了是不是说感染的机会很大? 耳朵后面淋巴肿大 是不是癌症症状 山西运城农业职业学院准备盖分校吗 运城上德大学苑什么时候开盘? 运城农业职业技术学院新校区建在哪个区? ...然後自己也感觉在地震,可是事实上没有,被惊醒时会感觉头很晕,请问是...
  • 焦点

最新推荐

猜你喜欢

热门推荐