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 DOM编程 文档,有要的没 Start from toc.htm DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY
oracle dbms_lob
ORACLE数据库使用dbms_stats包手动收集关于表的、索引的统计信息。
作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.GATHER_TABLE_STATS的语法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_...
dbms_obfuscation_toolkit加密解密数据
ORA-04063: package body SYS.DBMS_REGISTRY_SYS has errors
Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml
Oracle实用工具RMAN的应用为DBA管理多个Oracle数据库提供了集中备份管理与恢复控制的机制,大大地减轻了DBA的工作压力,而DBMS_JOB包的使用增强了存储过程的应用功能,这样,他们就可以从备份数据及重复处理数据的...
起先是dbms_xmldom.setCharset(doc, 'UTF8')不起作用,导出来的xml只有<?xml version="1.0"?>; 在setversion中加入:dbms_xmldom.setversion(doc, '1.0" encoding="UTF-8'); dbms_xmldom.writeToFile(doc, xml...
DBMS JOB包创建ORACLE定时任务
Oracle统计分析-dbms_stats.pdf
ORACLE 数据库备份分为物理备份和逻辑备份。物理备份是数据库文件拷贝的备份,冷备份、热备份属于物理备份。...这涉及到将每个表空间设置为备份状态,然后备份其数据文件,最后将表空间恢复成正常的状态。
ORACLE数据库封装过程DBMS_SQL的应用.pdf
DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...
oracle中DBMS_SQL的使用,详细讲解oracle DBMS_SQL的使用办法
Oracle动态SQL之DBMS_SQL系统包的使用.pdf
说明:本文为Oracle11g收集各种统计信息(DBMS_STAT)的简要指导手册 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 ● analyze始于Oracle7,但自从Oracle8.1.5引入dbms_stats...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
通过此版本可以把oracle时区版本调整到为最新版本,一般配合时区补丁使用 可以参考https://blog.csdn.net/weixin_43885834/article/details/105745901 https://download.csdn.net/download/weixin_43885834/12360971...
oracle dbms_sql的使用方法,非常使用