oracle 10g中,有两个包,用于处理xml格式: dbms_xmlgen 和 dbms_xmlstore.
1.创建临时表,写入两条数据:
create table xmldemo (
a number,
b varchar2(10)
);
insert into xmldemo values (10,'first line');
insert into xmldemo values (20,'line 2');
commit;
2.使用dbms_xmlgen生成数据表的xml格式
declare
xmlhdl dbms_xmlgen.ctxtype;
line varchar2(200);
xmltext varchar2(32767);
begin
-- create ctxhandle
xmlhdl := dbms_xmlgen.newcontext('select * from xmldemo');
-- generate xml format data into clob
xmltext := dbms_xmlgen.getxml(xmlhdl);
-- display the xml content
loop
exit when xmltext is null;
line := substr(xmltext,1,instr(xmltext,chr(10))-1);
dbms_output.put_line(line);
xmltext := substr(xmltext,instr(xmltext,chr(10))+1);
end loop;
-- close ctxhandle
dbms_xmlgen.closecontext(xmlhdl);
end;
输出结果:
<?xml version="1.0"?>
<ROWSET>
<ROW>
<A>10</A>
<B>first line</B>
</ROW>
<ROW>
<A>20</A>
<B>line 2</B>
</ROW>
</ROWSET>
3.dbms_xmlgen其它函数
getnumrowsprocessed(xml handle):=getxml所处理的实际行数
dbms_xmlgen.setMaxRows(xmlhdl,10):=允许处理最大行数
dbms_xmlgen.setrowsettag(xmlhdl,'Packet'):=重置行集标签rowset
dbms_xmlgen.setrowtag(xmlhdl,'Record'):=重置行标签row
dbms_xmlgen.setnullhandling(xmlhdl,2):=列空值如何表示,如: <A/>
上例修改:
插入空值数据:
insert into xmldemo values ('30',NULL);
insert into xmldemo values (null,'No.4');
commit;
代码修改:
declare
xmlhdl dbms_xmlgen.ctxtype;
line varchar2(200);
xmldoc clob;
xmltext varchar2(32767);
flag boolean;
begin
-- create ctxhandle
xmlhdl := dbms_xmlgen.newcontext('select * from xmldemo');
-- custerm config
dbms_xmlgen.setMaxRows(xmlhdl,10);
dbms_xmlgen.setrowsettag(xmlhdl,'Packet');
dbms_xmlgen.setrowtag(xmlhdl,'Record');
dbms_xmlgen.setnullhandling(xmlhdl,dbms_xmlgen.EMPTY_TAG);
-- generate xml format data into clob
xmldoc := dbms_xmlgen.getxml(xmlhdl);
-- display the xml content
xmltext := dbms_lob.substr(xmldoc);
loop
exit when xmltext is null;
line := substr(xmltext,1,instr(xmltext,chr(10))-1);
dbms_output.put_line(line);
xmltext := substr(xmltext,instr(xmltext,chr(10))+1);
end loop;
-- get row count
dbms_output.put_line(dbms_xmlgen.getnumrowsprocessed(xmlhdl));
-- close ctxhandle
dbms_xmlgen.closecontext(xmlhdl);
end;
输出结果:
<?xml version="1.0"?>
<Packet>
<Record>
<A>10</A>
<B>first line</B>
</Record>
<Record>
<A>20</A>
<B>line 2</B>
</Record>
<Record>
<A>30</A>
<B/>
</Record>
<Record>
<A/>
<B>No.4</B>
</Record>
</Packet>
4
另:xmlhdl 的类型为ctxtype或ctxhandle时,结果是一样的。
不知道oracle出于什么目的,待考
分享到:
相关推荐
Oracle的`dbms_xmlgen`包提供了生成XML文档的功能,它能够将数据库查询结果转换成XML格式。在描述中提到的`XML_PRINT`过程,就是利用`dbms_xmlgen.getXML()`来实现这个功能的一个示例。首先,我们来看一下这个过程的...
你可以直接存储XML文档到数据库表中,或者将表的数据转换为XML格式。XMLType提供了许多方法和函数,如getClob()、getBlob()和toXMLString(),用于创建、查询和操作XML数据。 2. **DBMS_XMLGEN**:Oracle提供了一个...
对于Oracle数据库,虽然没有直接的`LOAD XML`命令,但我们可以使用`DBMS_XMLGEN`包或`XMLType`对象来处理XML数据。例如,我们可以先将XML文件内容读入一个CLOB字段,然后通过解析XML来创建表: ```sql CREATE TABLE...
首先,Oracle提供了一个名为DBMS_XMLGEN的内置包,它包含了一系列函数和过程,用于将SQL查询结果转换成XML格式。例如,`DBMS_XMLGEN.getXML`可以将查询结果转化为XML字符串,而`DBMS_XMLGEN.newXML`则可以创建一个...
4. **PPT**:提到的PPT可能是一个关于XML数据转换的演示文稿,通常会包含以下内容:XML的基础概念,Oracle数据库对XML的支持,如何在Oracle中存储和查询XML数据,使用XMLType的例子,以及使用DBMS_XMLGEN和DBMS_XML...
例如,我们可以执行一个SQL查询,然后使用DBMS_XMLGEN.getXML函数将结果集转换为XML字符串。 ```sql DECLARE xml_clob CLOB; BEGIN SELECT DBMS_XMLGEN.getXML('SELECT * FROM table_name') INTO xml_clob FROM ...
在Oracle数据库系统中,XML(eXtensible Markup Language)是一种重要的数据交换格式,它用于存储和传输结构化数据。本篇文章将详细探讨如何在Oracle环境中生成复杂的XML结构,以满足各种业务需求。 首先,Oracle...
在Oracle报表环境中,修改报表并创建RTF(Rich Text Format)文档和XML(Extensible Markup Language)文档是一项常见的任务,特别是在需要将结构化数据转换为易于阅读和打印的格式时。这里我们将深入探讨如何实现这一...
3. **XML查询**: Oracle SQL支持对XML数据的查询,通过使用XMLTable函数,可以将XML文档中的元素转换为关系表,然后使用SQL查询。此外,XPath和XQuery语言也集成在Oracle中,允许更复杂的数据检索和处理。 4. **XML...
在Oracle数据库环境中,XML运动指的是将数据在关系型表与XML格式之间进行转换的过程。XML(eXtensible Markup Language)是一种数据交换和存储的标准,它允许数据以结构化的方式被描述,使得非结构化的信息可以被更...
在Oracle数据库管理中,有时我们需要将XML文件中的数据有效地导入到数据库中,这可以通过使用存储过程来实现。本文将详细讲解如何使用Oracle存储过程完成这一任务,并提供源代码和相关截图辅助理解。 首先,理解XML...
5. **PL/SQL与XML**:Oracle的PL/SQL编程语言提供了丰富的XML处理函数和包,如DBMS_XMLGEN、DBMS_XMLSAVE、DBMS_XSLPROCESSOR等,使得在PL/SQL中生成、解析、修改XML文档变得简单易行。 6. **XML索引**:为了提高...
同时,Oracle的DBMS_XSLPROCESSOR包可用于XML文档的转换,DBMS_XMLGEN用于生成XML,DBMS_XMLSAVE用于保存XML到数据库,这些工具进一步增强了XML在Oracle中的处理能力。 总之,Oracle数据库通过XDB组件和XMLTYPE数据...
5. **BINARY XML**: BINARY XML是Oracle对XML数据的一种优化存储方式,它将XML文档转换为二进制格式,以减少存储空间和提高查询性能。 6. **PL/SQL与XML**: Oracle的PL/SQL过程语言支持处理XML,包括创建、读取、...
4. **XSLT Transformation**:通过DBMS_XSLPROCESSOR包,Oracle支持XSLT(可扩展样式表语言转换),可以将XML文档转换为其他格式,如HTML或另一个XML文档。 5. **XMLIndexing**:为了提高XML数据的查询性能,Oracle...
使用DBMS_XSL_PROCESSOR或DBMS_XMLGEN等包,可以将XML数据转换为其他格式,或者反之,进行批处理。 4. **W3C规范与Oracle**:Oracle数据库支持W3C的XPath和XQuery标准,用于查询和操作XML数据。这些标准使得在...
这可能涉及使用`DBMS_XMLGEN`包,该包提供了一种生成XML数据的方法,可以基于SQL查询结果。 总的来说,Oracle数据库提供了强大的XML支持,包括XML类型的内置处理,使得在PL/SQL中处理XML数据变得相对简单。通过理解...
2. 导入XML:使用`OPENXML`函数配合`sp_xml_preparedocument`和`sp_xml_removedocument`存储过程,可以将XML数据解析并插入到表中。另外,T-SQL也支持直接的XML类型列,可以直接将XML字符串插入到XML类型的字段。 ...