一、LOB写入测试:

建表:clob_test(id,position_clob,strain_clob);

create or replace PROCEDURE CLOB_WRITE_TEXT AS
V_CLOB CLOB;
BEGIN--★(1)★遇到大对象列的时候,要首先插入空白构造函数insert into clob_test(id,position_clob,strain_clob) values(id_seq.nextval,empty_clob(),empty_clob();--得到clob的指针,并存放在变量v_clob中,这里要加上for update之句,--表示事务的开始,否则dbms_lob.open 的执行会产生错误select position_clob into V_CLOB from clob_test where id='1' for update;--★(2)★根据clob指针以读写方式打开clobdbms_lob.open(v_clob,dbms_lob.lob_readwrite);--★(3)★然后就是写入数据了,格式:DBMS_LOB.Write(被写入LOB, 写入长度(指写入LOB数据),写入起始位置(指被写入LOB),写入LOB数据);  --往lob中写入字符mis,3表示被写的字符数量,1表示开始写的位置,下面的语句表示字符串中只有3个字符被写入lob中 dbms_lob.write(v_clob,3,1,'mis');--★注:这里还有一个函数要注意,writeappend:将缓冲区的数据追加到lob的末尾;--格式:DBMS_LOB.WRITEAPPEND(lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB, --                          amount IN BINARY_INTEGER,  --                          buffer IN RAW/VARCHAR2--                         ); --下面的语句表示字符串中只有前20个字符被追加写入到了v_clob中dbms_lob.writeappend(v_clob,20,'shtgfsvgsdfrnyerergbfghgl.,mnbgaewbtnmgigynbrdfgi,ommnsbcdsfb');--★(4)★最后关闭lob指针dbms_lob.close(v_clob);--提交修改commit;exceptionwhen others then--出现错误,提示失败dbms_output.put_line('失败!');rollback;
END CLOB_WRITE_TEXT;

二、LOB读取测试

对一中的表中的clob类型的列的数据做读取操作:

create or replace PROCEDURE CLOB_READ_TEXT AS--定义把数据读取出来的clob变量pclob CLOB;sclob CLOB;read_id number;p_out varchar2(32767);s_out varchar2(32767);p_read_lenth number;s_read_lenth number;
begin--获得一个lob locatorselect POSITION_CLOB into pclob from clob_test where id = '1';select STRAIN_CLOB into sclob from clob_test where id = '1';--将要读取lob整个长度的字符p_read_lenth :=LENGTH(pclob);s_read_lenth :=LENGTH(sclob);--★读取lob数据,格式如下★--DBMS_LOB.READ(lob_loc IN BLOB/CLOB/BFILE,     -- LOB 数据--              amount IN OUT NOCOPY BINARY_INTEGER,    -- IN:要读取的字符数;OUT:实际读取的字符数  --              offset IN INTEGER,      --  起始位置  --              buffer   OUT  RAW/VARCHAR2    -— 存储返回数据的变量--              );--下面的 1 表示从第一个字符开始读取,读取的字符放在变量x_out中dbms_lob.read(pclob,p_read_lenth,1,p_out);dbms_lob.read(sclob,s_read_lenth,1,s_out);--显示读取的结果--select id into read_id from clob_test;dbms_output.put_line('当前的id值:'||read_id);dbms_output.put_line('position的clob字符串:'||p_out);dbms_output.put_line('长度为:'|| length(p_out));dbms_output.put_line('strain的clob字符串:'||s_out);dbms_output.put_line('长度为:'|| length(s_out));
end CLOB_READ_TEXT;

三、LOB截取测试

对一中的clob_test表中的clob类型的列的数据做读取操作:

create or replace PROCEDURE CLOB_SUBSTR_TEXT(p_out_array out array.filename_array ) AS v_amount INT;v_offset INT;pclob CLOB;p_read_lenth number;p_out varchar2(32767);v_clob1 varchar2(32767);str1 varchar2(32767);l_LEN integer;i integer;
BEGIN--数组初始化p_out_array := array.filename_array(); --数组扩展到10000个元素p_out_array.extend(10000); select POSITION_CLOB into pclob from clob_test where id = '2';p_read_lenth :=LENGTH(pclob);--p_out为输出的源串dbms_lob.read(pclob,p_read_lenth,1,p_out);--以逗号为分隔符截取字符串str1 := ','||p_out||',';--计算出有几个“,”(数字)l_len := length(Translate(str1, ',0123456789 ', ','));FOR i IN 1..l_len-1 LOOP--把数字都放数组里SELECT substr(str1,instr(str1,',',1,i)+1 ,instr(str1,',',1,i+1)-instr(str1,',',1,i)-1 ) INTO p_out_array(i) FROM dual;--dbms_output.put_line(t(i));END loop;--使用 隐式游标 判断数组的数据是否有效,当有数据返回时候该属性为TRUEif sql%found then --打印数组dbms_output.put_line('游标打开!数组数据写入成功!如下:');FOR i IN 1..l_len-1 LOOPdbms_output.put_line(p_out_array(i));END loop;elsedbms_output.put_line('游标未打开!');end if;--★截取clob部份字符串★ 注意substr是一个函数而不是一个存储过程,不修改clob变量的值,格式如下:--DBMS_LOB.SUBSTR(lob_loc  IN  BLOB/CLOB/BFILE,   -- 提取的来源  --                amount   IN  INTEGER:=32762,   -- 提取长度  --                offset   IN  INTEGER:=1   -- 开始位置  --               )RETURN  RAW/VARCHAR2;   -- 提取到的内容v_amount:=11;  --截取长度v_offset:=1;    --开始截位置--截取v_amount长度的字符串赋值给v_clob1v_clob1 := dbms_lob.substr(p_out,v_amount,v_offset);dbms_output.put_line(v_clob1);
EXCEPTIONWHEN TOO_MANY_ROWS THENDBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('others unknown errors !');
END CLOB_SUBSTR_TEXT;

四、LOB其他函数——后续再抽时间补上

部分参考资料:https://blog.csdn.net/guoxilen/article/details/73470586

ORACLE学习笔记(七)——DBMS_LOB包的学习和使用相关推荐

  1. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  2. 2022Java学习笔记七十三(异常处理:运行时异常、编译时异常、异常的默认处理的流程)

    2022Java学习笔记七十三(异常处理:运行时异常.编译时异常.异常的默认处理的流程) 一.异常体系 1.Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题 2.R ...

  3. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. 《Go语言圣经》学习笔记 第十章 包和工具

    <Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...

  5. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  6. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  7. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  8. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  10. window的dos命令学习笔记 七

    文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...

最新文章

  1. 互联网项目一般使用mysql的什么隔离级别
  2. js会用php处理吗,js怎么跟php结合使用
  3. CSS--居中方式总结
  4. c语言10个数如何求最大值,C语言,输入10个数怎样输出10个数中最大值,最小值(大一计算机)...
  5. shell脚本实现自动化备份
  6. Android 系统性能优化(15)---Android性能优化典范 - 第3季
  7. Spring mvc实现ex导入导出
  8. 大容量内存的电脑提速技巧
  9. 打开IIS管理器的两种方式
  10. Mybatis面向接口编程
  11. 联想台式主机拆机教程_联想台式电脑主机怎么拆 联想b5040一体机拆机
  12. maya blend shape
  13. 游戏设计模式-原型模式
  14. 为什么我们要学操作系统?
  15. 3dMax 对齐(星系)
  16. Redis集群批量删除key
  17. WebRequest 和 HttpWebRequest 区别
  18. Python3快速入门教程-zyiz.net
  19. Unity3d下载大型文件并显示进度
  20. 深度学习(9) 计算机专业方面的期刊介绍

热门文章

  1. 15个最好的免费开源电子商务平台
  2. 格式化数据恢复怎么做?超实用的3种方法在这!
  3. GoLang 下载和安装
  4. Epic Games CEO,《无尽之剑》创始人Tim Sweeney:下一代智能手机和平板电脑的游戏趋势
  5. 行业分析-全球与中国抛光混凝土地板市场现状及未来发展趋势
  6. 手写一个vue中英文翻译组件
  7. 计算机原理实验红绿灯转换,微机原理与应用的5个实验 包含8086扩展,8255交通灯,DEBUG程序,数码显示...
  8. 基于React + Antd 实现的斗兽棋web应用
  9. 3.26 haas506 2.0开发教程-example- 简易相机-串口控制ESP32-CAM OV2640拍照
  10. OPNET计算机网络仿真 实验作业1 - 网络拓扑创建