dbms_lob中substr,append,write用法
来源:互联网 发布:淘宝店铺授权凭证 编辑:程序博客网 时间:2024/05/22 04:46
本文转自:http://blog.sina.com.cn/s/blog_713978a50100prkt.html
注:在原文基础上作部分改动。
一、dbms_lob.substr()方法
CLOB里存的是2进制
判定长度 DBMS_LOB.GETLENGTH(col1)
获取文本 DBMS_LOB.SUBSTR(col1,n,pos)
DBMS_LOB.SUBSTR(col1,10,1)表示从第1个字节开始取出10个字节
DBMS_LOB.SUBSTR(CLOB_VAR,32767)表示截取CLOB变量保存的全部数据
DBMS_LOB.FILECLOSE(IMG_BFILE)关闭文件
代码示例:
-- 建表create table bak_DBMS_LOB_0302( bak_id number(4), bak_comment clob);commit;-- 插入测试数据delete from bak_dbms_lob_0302;insert into bak_dbms_lob_0302(bak_id,bak_comment) values(1,'a');insert into bak_dbms_lob_0302(bak_id,bak_comment) values(2,'ab');insert into bak_dbms_lob_0302(bak_id,bak_comment) values(3,'abcdefgccccccc');insert into bak_dbms_lob_0302(bak_id,bak_comment) values(4,'a bcdefg');commit;-- 获取字段长度select dbms_lob.getlength(bak_comment) from bak_dbms_lob_0302;-- 获取字段全部数据select dbms_lob.substr(bak_comment,32767) from bak_dbms_lob_0302;-- 从第1个字节开始取出5个字节,查询出的bak_comment字段乱码select b.bak_id, utl_raw.cast_to_varchar2(dbms_lob.substr(bak_comment,5,1)) from bak_dbms_lob_0302 b;-- 从第1个字节开始取出5个字节,正常显示,即使clob中包含空格仍能正常显示select b.bak_id, dbms_lob.substr(bak_comment,5,1) from bak_dbms_lob_0302 b for update;
二、dbms_lob.append()和dbms_lob.write()方法
dbms_lob.append 和 dbms_lob.write
append存储过程用于将一个大对象添加到另一个大对象中,此时是将源对象的内容全部添加过去。append存储过程的语法如下:
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 character set dest_lob%charset);
其中,各个参数的含义如下:
dest_lob是被源lob添加到的目标lob的定位器
src_lob是源lob的定位器
any_cs用来指定字符集。
write存储过程
write存储过程能够将数据写入大型对象中。写的位置是从大型对象开始处的某个绝对偏移地址,数据从缓冲区参数被写入。写操作将覆盖已经在大型对象偏移地址处存在的任何长度为指定的数据。如果输入数多于在缓冲区的数据,将产生一个错误。如果输入数量小于在缓冲区的数据,那么只有缓冲区的数据字节活字符被写给大型对象。
write存储过程的语法如下:
dbms_lob.write(
lob_loc in out nocopy blob,
amount in binary_integer,
offset in integer,
buffer in raw);
dbms_lob.write(
lob_loc in out nocopy clob character set any_cs,
amount in binary_integer,
offset in integer,
buffer in varchar2 character set lob_loc%charset);
其中各个参数的含义如下:
lob_loc是要操作的大型对象定位器。
amount是要写道大型对象中去的字节数量。
offset是指定将数据写入到大型对象什么位置的偏移地址。
buffer是写入到大型对象的数据缓冲区。
any_cs指定要使用的字符集。
代码示例:
declare src_lob clob; dest_lob clob; write_amount integer:= 18; writing_position integer; buffer_text varchar2(20) := 'added text to clob';begin select bak_comment into dest_lob from bak_dbms_lob_0302 where bak_id = 1 for update; select bak_comment into src_lob from bak_dbms_lob_0302 where bak_id = 2; -- 字符串合并后自动更新到数据表中 dbms_lob.append(dest_lob,src_lob); dbms_output.put_line(src_lob); dbms_output.put_line(dest_lob); commit; select bak_comment into dest_lob from bak_dbms_lob_0302 where bak_id = 2 for update; writing_position := dbms_lob.getlength(dest_lob) + 1; -- 将指定长度的字符串添加到字段末尾,并更新到数据表中 dbms_lob.write(dest_lob,write_amount,writing_position,buffer_text); dbms_output.put_line(dest_lob); dbms_output.put_line(write_amount); dbms_output.put_line(writing_position); commit;end;/
- dbms_lob中substr,append,write用法
- dbms_lob的instr和substr函数的用法
- dbms_lob包学习笔记之二:append和write存储过程
- DBMS_LOB的instr与substr
- Oracle中LOB 处理(dbms_lob的一些用法)
- dbms_lob包的用法
- dbms_lob用法小结
- 数据库:dbms_lob用法小结
- dbms_lob用法小结
- DBMS_LOB的用法
- dbms_lob用法小结
- dbms_lob用法小结
- ORALCE DBMS_LOB用法
- Oracle中SubStr函数用法
- Oracle中substr的用法
- JS中substr的用法
- C++中substr()函数用法
- oracle中substr() instr() 用法
- Deep Learning 介绍(一)
- 冒泡排序
- Github for Windows使用图文教程
- IOS项目开发布局四
- C语言之字符串
- dbms_lob中substr,append,write用法
- 采用OleDB读取EXCEL文件
- Linux 如何快速查找文件
- WEB开发一些网页错误代码
- cv::Mat和IPlImage
- Jsp+Tomcat+Mysql搭建web项目 Jsp链接Mysql数据库
- Linux socket网络编程之聊天室(三):select异步通讯实现
- makefile 链接线程 pthread
- 连分号区间