`
huoyj
  • 浏览: 89023 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 10g 用dbms_xmlgen将数据表转成xml格式

阅读更多
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 报表开发中用PCK直接生成xml数据文件

    Oracle的`dbms_xmlgen`包提供了生成XML文档的功能,它能够将数据库查询结果转换成XML格式。在描述中提到的`XML_PRINT`过程,就是利用`dbms_xmlgen.getXML()`来实现这个功能的一个示例。首先,我们来看一下这个过程的...

    oracle 高效生成指定复杂样式的xml文件

    你可以直接存储XML文档到数据库表中,或者将表的数据转换为XML格式。XMLType提供了许多方法和函数,如getClob()、getBlob()和toXMLString(),用于创建、查询和操作XML数据。 2. **DBMS_XMLGEN**:Oracle提供了一个...

    XML文件创建数据库表

    对于Oracle数据库,虽然没有直接的`LOAD XML`命令,但我们可以使用`DBMS_XMLGEN`包或`XMLType`对象来处理XML数据。例如,我们可以先将XML文件内容读入一个CLOB字段,然后通过解析XML来创建表: ```sql CREATE TABLE...

    Oracle XML方法封装PackageBody

    首先,Oracle提供了一个名为DBMS_XMLGEN的内置包,它包含了一系列函数和过程,用于将SQL查询结果转换成XML格式。例如,`DBMS_XMLGEN.getXML`可以将查询结果转化为XML字符串,而`DBMS_XMLGEN.newXML`则可以创建一个...

    XML数据转换

    4. **PPT**:提到的PPT可能是一个关于XML数据转换的演示文稿,通常会包含以下内容:XML的基础概念,Oracle数据库对XML的支持,如何在Oracle中存储和查询XML数据,使用XMLType的例子,以及使用DBMS_XMLGEN和DBMS_XML...

    Creating XML Documents with PL/SQL

    例如,我们可以执行一个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.rar_oracle

    在Oracle数据库系统中,XML(eXtensible Markup Language)是一种重要的数据交换格式,它用于存储和传输结构化数据。本篇文章将详细探讨如何在Oracle环境中生成复杂的XML结构,以满足各种业务需求。 首先,Oracle...

    修改报表-建立RTF文档和XML文档

    在Oracle报表环境中,修改报表并创建RTF(Rich Text Format)文档和XML(Extensible Markup Language)文档是一项常见的任务,特别是在需要将结构化数据转换为易于阅读和打印的格式时。这里我们将深入探讨如何实现这一...

    Oracle_XML开发手册

    3. **XML查询**: Oracle SQL支持对XML数据的查询,通过使用XMLTable函数,可以将XML文档中的元素转换为关系表,然后使用SQL查询。此外,XPath和XQuery语言也集成在Oracle中,允许更复杂的数据检索和处理。 4. **XML...

    XML Movement in Oracle

    在Oracle数据库环境中,XML运动指的是将数据在关系型表与XML格式之间进行转换的过程。XML(eXtensible Markup Language)是一种数据交换和存储的标准,它允许数据以结构化的方式被描述,使得非结构化的信息可以被更...

    使用oracle存储过程将xml文件数据导入数据库

    在Oracle数据库管理中,有时我们需要将XML文件中的数据有效地导入到数据库中,这可以通过使用存储过程来实现。本文将详细讲解如何使用Oracle存储过程完成这一任务,并提供源代码和相关截图辅助理解。 首先,理解XML...

    Oracle XML开发手册

    5. **PL/SQL与XML**:Oracle的PL/SQL编程语言提供了丰富的XML处理函数和包,如DBMS_XMLGEN、DBMS_XMLSAVE、DBMS_XSLPROCESSOR等,使得在PL/SQL中生成、解析、修改XML文档变得简单易行。 6. **XML索引**:为了提高...

    XML在Oracle数据库中的应用参考.pdf

    同时,Oracle的DBMS_XSLPROCESSOR包可用于XML文档的转换,DBMS_XMLGEN用于生成XML,DBMS_XMLSAVE用于保存XML到数据库,这些工具进一步增强了XML在Oracle中的处理能力。 总之,Oracle数据库通过XDB组件和XMLTYPE数据...

    Oracle XML开发手册(PDF)

    5. **BINARY XML**: BINARY XML是Oracle对XML数据的一种优化存储方式,它将XML文档转换为二进制格式,以减少存储空间和提高查询性能。 6. **PL/SQL与XML**: Oracle的PL/SQL过程语言支持处理XML,包括创建、读取、...

    OracleAndXML

    4. **XSLT Transformation**:通过DBMS_XSLPROCESSOR包,Oracle支持XSLT(可扩展样式表语言转换),可以将XML文档转换为其他格式,如HTML或另一个XML文档。 5. **XMLIndexing**:为了提高XML数据的查询性能,Oracle...

    Oracle 批处理

    使用DBMS_XSL_PROCESSOR或DBMS_XMLGEN等包,可以将XML数据转换为其他格式,或者反之,进行批处理。 4. **W3C规范与Oracle**:Oracle数据库支持W3C的XPath和XQuery标准,用于查询和操作XML数据。这些标准使得在...

    Oracle表数据和xml文件间相互导入导出的PL.pdf

    这可能涉及使用`DBMS_XMLGEN`包,该包提供了一种生成XML数据的方法,可以基于SQL查询结果。 总的来说,Oracle数据库提供了强大的XML支持,包括XML类型的内置处理,使得在PL/SQL中处理XML数据变得相对简单。通过理解...

    数据库与xml的导入导出

    2. 导入XML:使用`OPENXML`函数配合`sp_xml_preparedocument`和`sp_xml_removedocument`存储过程,可以将XML数据解析并插入到表中。另外,T-SQL也支持直接的XML类型列,可以直接将XML字符串插入到XML类型的字段。 ...

Global site tag (gtag.js) - Google Analytics