CREATE OR REPLACE FUNCTION F_EXPORT2XML RETURN INTEGER IS
RESULT INTEGER := 0;
XMLSTRING CLOB := NULL;
AMOUNT INTEGER := 32767;
POSITION INTEGER := 1;
CHARSTRING VARCHAR2(32767) := '';
IDX_CHR10 INTEGER;
LEN INTEGER;
WRITESTRING VARCHAR2(32767);
FILEHANDLE UTL_FILE.FILE_TYPE;
XMLHDL DBMS_XMLGEN.CTXTYPE;
SQLERRTEXT VARCHAR2(32767);
BEGIN
XMLHDL := DBMS_XMLGEN.NEWCONTEXT('SELECT * FROM XXXXl');
--open the file in "write" mode
FILEHANDLE := UTL_FILE.FOPEN('EXPDIR', 'XML_XXXX.XML', 'w');
XMLSTRING := DBMS_XMLGEN.GETXML(XMLHDL);
--Now open the lob data..
DBMS_LOB.OPEN(XMLSTRING, DBMS_LOB.LOB_READONLY);
LOOP
-- read the lob data
DBMS_LOB.READ(XMLSTRING, AMOUNT, POSITION, CHARSTRING);
IDX_CHR10 := INSTR(CHARSTRING, CHR(10), -1);
LEN := LENGTH(CHARSTRING);
IF (IDX_CHR10 < LEN AND IDX_CHR10 > 0) THEN
WRITESTRING := SUBSTR(CHARSTRING, 1, IDX_CHR10 - 1);
ELSE
WRITESTRING := SUBSTR(CHARSTRING, 1, LEN - 1);
END IF;
UTL_FILE.PUT_LINE(FILEHANDLE, WRITESTRING);
POSITION := POSITION + IDX_CHR10;
END LOOP;
RESULT := 1;
RETURN(RESULT);
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- end of fetch, free the lob
DBMS_LOB.CLOSE(XMLSTRING);
DBMS_LOB.FREETEMPORARY(XMLSTRING);
IF UTL_FILE.IS_OPEN(FILEHANDLE) THEN
UTL_FILE.FCLOSE(FILEHANDLE);
END IF;
RETURN(RESULT);
WHEN OTHERS THEN
SQLERRTEXT := SQLERRM;
IF UTL_FILE.IS_OPEN(FILEHANDLE) THEN
UTL_FILE.FCLOSE(FILEHANDLE);
END IF;
RETURN(RESULT);
END F_EXPORT2XML;
经测试,效率比我写的上一个版本至少提供1倍,可能在某些特殊情况下,还是会出现异常,不过不影响大局了。
分享到:
相关推荐
首先,DBMS_XMLPARSER用于解析XML数据,生成DOM树;然后,DBMS_XMLDOM提供API对DOM树进行操作,比如查找、修改、添加或删除节点;最后,DBMS_XMLQUERY可以执行XPath查询,找出需要的数据,或者进行XSLT转换,将XML...
本文将详细讨论如何使用Package(PCK)直接生成XML数据文件,特别关注使用`dbms_xmlgen.getXML()`过程的方法。 Oracle的`dbms_xmlgen`包提供了生成XML文档的功能,它能够将数据库查询结果转换成XML格式。在描述中...
总之,`DBMS_LOB`是Oracle数据库管理LOB数据的关键工具,对于处理大量非结构化数据的开发者来说,理解和熟练使用这个包是必不可少的技能。通过深入学习和实践,可以有效地利用Oracle的LOB功能满足大数据存储和处理的...
在Oracle数据库环境中,高效地生成指定复杂样式的XML文件是一项重要的任务,特别是在处理大量数据时。Oracle提供了多种方法来实现这一目标,包括使用PL/SQL过程、内置的XML函数以及XMLType对象。以下是对这个主题的...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、TripleDES以及MD5等,能够为数据的安全性提供强有力的保障。下面将详细介绍...
1. **对于分区表**:建议使用 `DBMS_STATS` 而不是 `ANALYZE` 语句,因为 `DBMS_STATS` 支持并行处理、可以收集整个分区表的数据以及单个分区的数据,并且可以在不同级别上计算统计信息。 2. **对于非分区表**:同样...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...
在实际开发中,`DBMS_RANDOM`经常被用来填充测试数据集,因为它可以快速生成大量看似随机但实际上可重复的数据,这对于测试环境来说非常有用。此外,它还可以在自动化脚本中用于生成唯一标识符,如订单号或用户ID。 ...
XML_API.rar_dbms_xml api 是一个与数据库管理和XML处理相关的资源包,主要涉及Oracle数据库中的DBMS_XML API。这个API是一组PL/SQL过程和函数,用于在Oracle数据库中操作XML数据。它允许用户生成、解析、查询以及...
### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...
总的来说,这个过程涵盖了Oracle报表的修改、XML文件的生成、并发程序的注册、数据导入与处理以及最终RTF文档的创建。对于初学者,理解这些步骤和工具的使用将极大地提升在Oracle环境中的工作效率。通过实践和理解...
对于Oracle数据库,虽然没有直接的`LOAD XML`命令,但我们可以使用`DBMS_XMLGEN`包或`XMLType`对象来处理XML数据。例如,我们可以先将XML文件内容读入一个CLOB字段,然后通过解析XML来创建表: ```sql CREATE TABLE...
而 "DBMS_c" 文件可能是整个 DBMS 实现的核心代码库,包含了数据结构、查询解析、事务处理、索引管理等关键组件。 在 C 语言实现的 DBMS 中,以下是一些关键知识点: 1. **数据模型**:首先,理解数据是如何组织的...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
Oracle数据库在处理XML数据时提供了丰富的功能,其中`Oracle XML方法封装PackageBody`是一个非常实用的设计,它将常用的XML操作集中在一起,以便于在数据库中进行XML数据的处理和交互。这种封装通常是为了提高代码的...
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
DBMS_XMLGEN主要用于从SQL查询结果生成XML,而DBMS_XSLPROCESSOR则用于应用XSLT样式表对XML进行转换。例如,我们可以执行一个SQL查询,然后使用DBMS_XMLGEN.getXML函数将结果集转换为XML字符串。 ```sql DECLARE ...