ORACLE 中 XML 基本函数介绍
1.EXTRACT(XMLType_instance,Xpath_string)
该函数用于返回XML节点路径下的相应内容
示例: SELECT extract(prj_xml,'/root/main') FROM project t;
2. EXTRACTVALUE(XMLType_instance,Xpath_string)
该函数用于返回特定XML节点路径的数据
示例: SELECT extractvalue( prj_xml ,'/root/main/姓名') FROM project t ;
3. EXISTSNODE(XMLType_instance,Xpath_string)
该函数用于确定特定的XML节点的路径是否存在,返回0表示节点不存在,返回1表示节点存在。
示例: SELECT existsnode(value(a),'/root/main/住院号') data FROM xmltable a;
4. SYS_DBURIGEN({column|attribute})
该函数用于根据列或者属性生成类型为DBUrlType的URL
示例: SELECT sys_dburigen(a.DISPLAYNAME) aa FROM v_dept a WHERE a.DISPLAYNAME='矽肺病医院'
5.SYS_XMLAGG(expr[,fmt])
该函数用于汇总所有XML文档,并生成一个XML文档。
示例: SELECTSYS_XMLAGG(SYS_XMLGEN(a.order_content)) xml_content
from doc_clinic_order a, clinics_item b, med_frequencydict c
where a.patient_id = 'bd4b425e-a409-4b28-890d-d1d668fcf725'
and a.parentid = '0'
and a.route = b.item_id(+)
and a.frequency = c.frequency_id(+)
6.SYS_XMLGEN(expr[,fmt])
该函数用于根据数据库表的行和列生成XMLType实例。
7.XMLAGG(XMLType_instance[ORDER BY sort_list])
该函数用于汇总多个XML块,并生成XML文档。
示例: select xmlagg(xmlelement("row",
8. XMLFOREST(value_expr1[,value_expr2],...)
该函数用于返回XML块
9. XMLELEMENT(identifier[,xml_attribute_clause][,value_expr])
该函数用于返回XMLType的实例。其中参数identifier用于指定元素名,参数xml_attribute_clause用于指定元素属性子句,参数value_expr用于指定元素值。
示例: SELECTxmlelement("row",
xmlcolattval(a.frequency_codeAS "编码",
a.frequency_nameas "名称")) xml
from med_frequencydict a
where a.frequency_code = 'BID'
10.XMLCOLATTVAL(value_expr[,value_expr2],...)
该函数用于生成XML块,参数value_expr用于指定列名或者别名作为属性名。
示例:
11.XMLCONCAT(XMLType_instance1[,XMLType_instance2],...)
该函数用于连接多个XMLType实例,并生成新的XMLType实例。
示例: selectxmlconcat(xmltype('<row><no>1</no></row>'),
xmltype('<row><no>2</no></row>'),
xmltype('<row><no>3</no></row>'))
fromdual
12.XMLSEQUENCE(xmltype_instance)
该函数用于返回XMLType实例中顶级节点以下的VARRAY元素。
示例:select extractvalue(column_value,'/row/医嘱内容') 医嘱内容
from table(xmlsequence(extract((select value(a)
fromxmltable a
where rownum= 1),
'/root/detail/row')))
13.UPDATEXML(XMLType_instance,Xpath_string,value_expr)
该函数用于更新特定XMLType实例相应的节点路径的内容
示例: selectupdatexml(xmltype('<root><row><no>1</no><name>名字1</name></row><row><no>2</no><name>名字2</name></row></root>'),
'/root/row[no=2]/name',
'新名字')
from dual
14.XMLTRANSFORM(xmltype_instance,xsl_ss)
该函数用于将XMLType实例按照XSL样式进行转换,并生成新的XMLType实例
15.DELETEXML(XMLType_instance,Xpath_string)
该函数用于删除特定XMLType实例相应的节点路径的内容
16.XML转换表
SELECT * FROM XMLTABLE(' $SQ/root/detail/row' PASSING
(select value(a) from xmltable a) AS SQ
COLUMNS 医嘱ID VARCHAR2(50) PATH '/row/医嘱ID',
医嘱内容 VARCHAR2(200) PATH '/row/医嘱内容',
频次 VARCHAR2(200) PATH '/row/频次',
用法 VARCHAR2(200) PATH '/row/用法' )
order by 医嘱ID
联系客服