xmltype
来源:互联网 发布:淘宝店铺货源 编辑:程序博客网 时间:2024/06/06 01:45
declare
testXML XMLTYPE;
outXML XMLTYPE;
begin
testXML:=XMLTYPE.CREATEXML(
'<patients>'||
'<patient><id>1</id><name>张三</name></patient>'||
'<patient><id>2</id><name>李四</name></patient>'||
'</patients>'
);
dbms_output.put_line(to_char(testxml.getClobval()));
select appendchildxml(testxml,'/patients/patient',xmltype.createxml('<sex>男</sex>')) into outxml from dual;
dbms_output.put_line(to_char(outxml.getClobval()));
end;
输出:
testXML:<patients><patient><id>1</id><name>张三</name></patient><patient><id>2</id><name>李四</name></patient></patients>
outXML:<patients><patient><id>1</id><name>张三</name><sex>男</sex></patient><patient><id>2</id><name>李四</name><sex>男</sex></patient></patients>
2、DeleteXML(XMLTYPE,指定节点) 删除指定节点
declare
testXML XMLTYPE;
outXML XMLTYPE;
begin
testXML:=XMLTYPE.CREATEXML(
'<patients>'||
'<patient><id>1</id><name>张三</name></patient>'||
'<patient><id>2</id><name>李四</name></patient>'||
'</patients>'
);
dbms_output.put_line('testXML:'||to_char(testxml.getClobval()));
select DeleteXML(testxml,'/patients/patient/name') into outxml from dual;
dbms_output.put_line('outXML:'||to_char(outxml.getClobval()));
end;
输出:
testXML:<patients><patient><id>1</id><name>张三</name></patient><patient><id>2</id><name>李四</name></patient></patients>
outXML:<patients><patient><id>1</id></patient><patient><id>2</id></patient></patients>
3、ExistsNode(XMLTYPE,指定节点) 判断指定节点是否存在,存在返回1 否则返回0
declare
testXML XMLTYPE;
outXML XMLTYPE;
n_Count Number;
begin
testXML:=XMLTYPE.CREATEXML(
'<patients>'||
'<patient><id>1</id><name>张三</name></patient>'||
'<patient><id>2</id><name>李四</name></patient>'||
'</patients>'
);
dbms_output.put_line('testXML:'||to_char(testxml.getClobval()));
select Existsnode(testxml,'/patients/patient/name') into n_Count from dual;
dbms_output.put_line(n_Count);
select DeleteXML(testxml,'/patients/patient/name') into outxml from dual;
select Existsnode(outxml,'/patients/patient/name') into n_Count from dual;
dbms_output.put_line(n_Count);
-- dbms_output.put_line('outXML:'||to_char(outxml.getClobval()));
end;
输出:
testXML:<patients><patient><id>1</id><name>张三</name></patient><patient><id>2</id><name>李四</name></patient></patients>
1
0
4、ExtractValue(xmltype,指定节点) 只返回一个节点的值
declare
testXML XMLTYPE;
outXML XMLTYPE;
strValue varchar2(100);
begin
testXML:=XMLTYPE.CREATEXML(
'<patients>'||
'<patient1><id>1</id><name sex="男">张三</name></patient1>'||
'<patient2><id>2</id><name>李四</name></patient2>'||
'</patients>'
);
dbms_output.put_line('testXML:'||to_char(testxml.getClobval()));
select ExtractValue(testxml,'/patients/patient2/name') into strValue from dual;
--dbms_output.put_line(to_char(outxml.getClobval()));
dbms_output.put_line(strvalue);
end;
end;
输出:
testXML:<patients><patient1><id>1</id><name>张三</name></patient1><patient2><id>2</id><name>李四</name></patient2></patients>
李四
5、Extract(XMLTYPE,指定节点) 返回指定节点所组成的XMLTYPE
declare
testXML XMLTYPE;
outXML XMLTYPE;
strValue varchar2(100);
begin
testXML:=XMLTYPE.CREATEXML(
'<patients>'||
'<patient><id>1</id><name sex="男">张三</name></patient>'||
'<patient><id>2</id><name>李四</name></patient>'||
'</patients>'
);
dbms_output.put_line('testXML:'||to_char(testxml.getClobval()));
select Extract(testxml,'/patients/patient') into outXML from dual;
dbms_output.put_line('outXML'||to_char(outxml.getClobval()));
end;
输出:
testXML:<patients><patient><id>1</id><name sex="男">张三</name></patient><patient><id>2</id><name>李四</name></patient></patients>
outXML<patient><id>1</id><name sex="男">张三</name></patient><patient><id>2</id><name>李四</name></patient>
6、XMLCOLATTVAL(value1,value2,.....) 返回一个以column值格式的XMLTYPE对象
SQL> select xmlcolattval(a.DEPTNO AS "编码",a.dname).getstringval() from scott.dept a;
XMLCOLATTVAL(A.DEPTNOAS"编码",
--------------------------------------------------------------------------------
<column name = "编码">10</column><column name = "DNAME">ACCOUNTING</column>
<column name = "编码">20</column><column name = "DNAME">RESEARCH</column>
<column name = "编码">30</column><column name = "DNAME">SALES</column>
<column name = "编码">40</column><column name = "DNAME">OPERATIONS</column>
7、XMLELEMENT("NODE_NAME",[xmlattributes(attribute_vale as attribute_alais)],NODE_VALUE) 返回一个XMLTYPE对象
SQL> SELECT XMLELEMENT("ROOT",XMLCOLATTVAL(a.DEPTNO AS "编码",a.DNAME as "名称")).GETSTRINGVAL() FROM SCOTT.DEPT a;
XMLELEMENT("ROOT",XMLCOLATTVAL
--------------------------------------------------------------------------------
<ROOT><column name = "编码">10</column><column name = "名称">ACCOUNTING</column></RO
<ROOT><column name = "编码">20</column><column name = "名称">RESEARCH</column></ROOT
<ROOT><column name = "编码">30</column><column name = "名称">SALES</column></ROOT>
<ROOT><column name = "编码">40</column><column name = "名称">OPERATIONS</column></RO
SQL> select xmlelement("root",xmlattributes(deptno as 部门号),dname).getstringval() from scott.dept;
XMLELEMENT("ROOT",XMLATTRIBUTE
--------------------------------------------------------------------------------
<root 部门号="10">ACCOUNTING</root>
<root 部门号="20">RESEARCH</root>
<root 部门号="30">SALES</root>
<root 部门号="40">OPERATIONS</root>
8、XMLConcat(xmltype1,xmltype2,......) :连接多个xmltype对象
declare
xmlname xmltype;
xmlsex xmltype;
xmlage xmltype;
xmlpatient xmltype;
begin
select xmlelement("name",'张三') into xmlname from dual ;
select xmlelement("sex",'男') into xmlsex from dual ;
select xmlelement("age",'13') into xmlage from dual ;
select xmlelement("patient",xmlconcat(xmlname,xmlsex,xmlage)) into xmlpatient from dual;
dbms_output.put_line(xmlpatient.getStringval());
end;
输出:
<patient><name>张三</name><sex>男</sex><age>13</age></patient>
9、xmlforest(column1,column2,....) 将多个列组合成一个xmltype对象
SQL> select xmlelement("dept",xmlforest(a.deptno,a.dname,a.loc)).getstringval() from scott.dept a;
XMLELEMENT("DEPT",XMLFOREST(A.
--------------------------------------------------------------------------------
<dept><DEPTNO>10</DEPTNO><DNAME>ACCOUNTING</DNAME><LOC>NEW YORK</LOC></dept>
<dept><DEPTNO>20</DEPTNO><DNAME>RESEARCH</DNAME><LOC>DALLAS</LOC></dept>
<dept><DEPTNO>30</DEPTNO><DNAME>SALES</DNAME><LOC>CHICAGO</LOC></dept>
<dept><DEPTNO>40</DEPTNO><DNAME>OPERATIONS</DNAME><LOC>BOSTON</LOC></dept>
10、数据类型转换
getStringVal()
getClobVal()
getBlobVal()
getNumberVal()
- xmltype
- xmltype.extractValue
- Oracle9i之xmltype应用
- Oracle9i之xmltype应用
- oracle xmltype简介
- 读取XMLTYPE 类型数据
- oracle的xmltype例子
- oracle的xmltype例子
- oracle的xmltype例子
- oracle xmltype简单操作
- oracle xmltype解决方案
- Oracle xmltype解决方案
- Oracle 中的XMLTYPE应用学习
- orcle的xmltype 的处理
- Oracle的XMLTYPE的处理
- Oracle XMLType Store as CLOB
- Oracle9i之xmltype应用(1)
- Oracle9i之xmltype应用(2)
- Yii2创建表单(ActiveForm)
- 《自己动手写开源框架10》:Web界面快速开发实践
- 如何用jar命令将Java打包成jar文件详解
- Lua BitOp 提供5.1和5.2版本位操作运算 (跨平台C语言实现 说明部分1)
- 第三章第44题
- xmltype
- 大地大地
- C#:根据银行卡卡号判断银行名称
- 可恶的百度! G0603_71376.exe
- Bestcoder Round#43pog loves szh II
- Ceph架构剖析
- 面向对象的特征与“六原则一法则”
- Ceph的现状
- 10+年程序员总结的20+条经验教训