Declare
varC clob;
vRStr varchar2(1000);
ln number(4);
Strt number(4);
sStrt number(4);
differ1 number(4);
differ2 number(4);
vWStr varchar2(1000);
Begin
select DESCRLONG
into varC
from PSMSGCATDEFN
where MESSAGE_SET_NBR = 3000
AND MESSAGE_NBR = '473'
FOR UPDATE;
ln := DBMS_LOB.GetLength(varC);
Strt := 1;
vWStr := REPLACE(REPLACE(varC, '受抚养人/受益人', '家庭成员'),
'受抚养人',
'家庭成员');
sStrt := DBMS_LOB.GetLength(vWStr);
DBMS_output.put_line('未改之前varC: ' || varC);
DBMS_output.put_line('replace 的vWStr : ' || vWStr);
/*===================================
当源数据的长度与目标数据的长度相等,
则直接 Write过去(覆盖掉目标数据)。
===================================*/
if ln=sStrt then
DBMS_output.put_line('ln=sStrt ');
DBMS_LOB.Write(varC, ln,1,vWStr);
end if;
/*====================================
当源数据的长度”小于“目标数据的长度,
则先 Write源数据过去(先覆盖掉目标数
据的一部分(覆盖长度=源数据长度)),
然后,将目标数据长于源数据的部分
Erase(删除)掉。
=====================================*/
if ln>sStrt then
DBMS_output.put_line('ln>sStrt ');
differ1:=ln-sStrt;
differ2:=sStrt+1;
DBMS_LOB.Write(varC, sStrt,1,vWStr);
DBMS_LOB.Erase(varC, differ1, differ2);
end if;
/*=====================================
当源数据的长度“大于”目标数据的长度,
则取源数据一部分数据,先 Write过去(取
的规则:从源数据起始位置开始,到与目标
数据长度相等的位置为止),然后,将源数
据余下的部分 Append到目标数据后面。
======================================*/
if ln<sStrt then
DBMS_output.put_line('ln<sStrt ');
differ1:=sStrt-ln;
differ2:=ln+1;
DBMS_LOB.Write(varC, ln,1,DBMS_LOB.SubStr(vWStr,ln,1));
DBMS_LOB.Append(varC, DBMS_LOB.SubStr(vWStr,differ1,differ2));
end if;
DBMS_output.put_line('修改后的varC : ' || vWStr);
UPDATE PSMSGCATDEFN SET MESSAGE_TEXT=REPLACE(MESSAGE_TEXT,'受抚养人','家庭成员') where MESSAGE_SET_NBR = 3000 AND MESSAGE_NBR='473';
commit;
End;
分享到:
相关推荐
Oracle中的LOB(Large Object)是用于存储大量非结构化数据的数据类型...总之,Oracle的LOB数据类型为存储和管理大型非结构化数据提供了强大支持,通过合理的表设计和使用`DBMS_LOB`包,可以高效地处理这些大数据对象。
通过阅读如“Oracle中的包――DBMS_LOB(一).pdf”、“ORACLE LOB大对象处理.pdf”和“DBMS_LOB包的使用.pdf”等资料,可以深入理解这些概念,并通过实践来熟练掌握。同时,“dbms_lob包学习笔记之二:append和...
ASSM 可以有效地处理 LOB 对象的碎片问题,从而提高性能。 3. **索引组织表**:对于频繁查询的 LOB 字段,考虑使用索引组织表(IOT)。这样可以在查询时避免额外的表扫描,提高查询效率。 4. **并行操作**:利用...
《使用JDBC数据接口存取Oracle LOB(大对象)》这篇文章主要探讨了如何通过Java...对于Java开发者和Oracle数据库管理员来说,这篇文章提供了宝贵的理论知识和实践经验,有助于他们在实际项目中更好地处理大对象数据。
通过以上介绍,我们可以了解到Oracle的大对象处理涉及数据存储、读取、更新、删除以及性能优化等多个方面。在实际开发中,根据具体需求选择合适的LOB类型和管理策略,能够有效地处理和存储大量非结构化数据。
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
而JAVA编程语言的方法则提供了更高的灵活性和效率,特别是在处理大数据量时更为突出。因此,数据库管理员和开发者在面临大对象数据存取的抉择时,应根据实际需求和资源状况,选择最合适的实现路径。此外,本研究也...
本文通过Java代码示例解释了如何在Oracle数据库中操作LOB对象,尤其是CLOB类型。 1. **建立数据库连接** 在Java程序中,我们首先需要导入必要的JDBC库,并设置Oracle驱动程序、数据库连接URL、用户名和密码。`...
使用OCI,开发者可以直接操纵LOB对象,包括读取、写入和更新数据。优点是性能高效,可以直接控制数据库操作,但缺点是学习曲线陡峭,需要深入理解Oracle的内部机制。 2. Pro*C/C++:这是一种预编译器,将SQL和PL/...
Oracle数据库在存储和管理大对象非结构化数据方面扮演了重要角色,特别是其LOB(Large Object)数据类型,包括BLOB(Binary Large Object)和CLOB(Character Large Object)。BLOB类型用于存储二进制数据,如图片、...
处理LOB数据时,Oracle提供了一个强大的DBMS_LOB包,这个包简化了对内部LOB对象(BLOB和CLOB)的操作,包括读取和写入。然而,对于外部LOB对象BFILE,只能进行读操作,而写操作应该通过PL/SQL程序段来完成。 以下是...
为了解决这一问题,Oracle数据库引入了LOB(Large Objects,大对象)数据类型来存储大量二进制和文本数据。本文旨在详细介绍如何在Oracle数据库中使用和维护LOB数据类型。 #### LOB概述 在Oracle数据库中,LOB是一...
- 使用`OCINewDescriptor()`生成一个本地LOB对象的描述符,并指定类型为`OCI_D_LOB`。 - 使用`OCIBindByName()`将生成的LOB对象绑定到SQL语句中的LOB字段。 - 执行SQL语句。 - 给LOB对象赋值,例如通过`savefile...
Oracle从8i中使用了LOB(大对象)这种特殊的数据类型,实现了对这些数据的存储。 LOB是以对象的形式出现的,不同于以往的普通数据结构,因此具有对象的属性和方法,可以使用Java这种基于对象的语言进行操作。一个...
标题中的"C++Builder程序对Oracle数据库巨型对象类型的处理"指的是使用C++Builder这一集成开发环境(IDE)来操作Oracle数据库中的LOB(Large Object)类型数据,主要包括CLOB(Character Large Object)和BLOB...
### Oracle数据库对象导出脚本知识点解析 #### 标题:Oracle数据库对象导出脚本 此标题指明了本文档的主题是关于如何通过编写脚本来导出Oracle数据库中的对象定义。在Oracle数据库中,对象是指数据库表、视图、...
Oracle的`OracleLob`类提供了诸如`CreateTemporary`、`CopyTo`、`Trim`等方法,以支持这些高级功能。 总之,通过ADO.NET和OracleClient,开发者可以轻松地在C#应用程序中处理Oracle数据库中的Blob和Clob大对象,...