Oracle 中XML处理函数介绍
1.EXTRACT(XMLType_instance,Xpath_string)
该函数用于返回XML节点路径下的相应内容
示例:
SELECTextract(value(a),'/root/main')dataFROMxmltablea;
2.EXTRACTVALUE(XMLType_instance,Xpath_string)
该函数用于返回特定XML节点路径的数据
示例:
SELECTextractvalue(value(a),'/root/main/姓名')dataFROMxmltablea;
3.EXISTSNODE(XMLType_instance,Xpath_string)
该函数用于确定特定的XML节点的路径是否存在,返回0表示节点不存在,返回1表示节点存在。
示例:
SELECTexistsnode(value(a),'/root/main/住院号')dataFROMxmltablea;
4.SYS_DBURIGEN({column|attribute})
该函数用于根据列或者属性生成类型为DBUrlType的URL
示例:
SELECTsys_dburigen(a.DISPLAYNAME)aaFROMv_deptaWHEREa.DISPLAYNAME='矽肺病医院'
5.SYS_XMLAGG(expr[,fmt])
该函数用于汇总所有XML文档,并生成一个XML文档。
示例:
SELECTSYS_XMLAGG(SYS_XMLGEN(a.order_content))xml_content fromdoc_clinic_ordera,clinics_itemb,med_frequencydictc wherea.patient_id='bd4b425e-a409-4b28-890d-d1d668fcf725' anda.parentid='0' anda.route=b.item_id(+) anda.frequency=c.frequency_id(+)
6.SYS_XMLGEN(expr[,fmt])
该函数用于根据数据库表的行和列生成XMLType实例。
7.XMLAGG(XMLType_instance[ORDERBYsort_list])
该函数用于汇总多个XML块,并生成XML文档。
示例:
selectxmlagg(xmlelement("row",xmlforest(a.frequency_idas"频次ID",a.frequency_nameas"频次名称")))[] frommed_frequencydicta
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 frommed_frequencydicta wherea.frequency_code='BID'
10.XMLCOLATTVAL(value_expr[,value_expr2],...)
该函数用于生成XML块,参数value_expr用于指定列名或者别名作为属性名。
示例:
SELECTxmlelement("row",xmlcolattval(a.frequency_codeAS"编码",a.frequency_nameas"名称"))xml frommed_frequencydicta wherea.frequency_code='BID'
11.XMLCONCAT(XMLType_instance1[,XMLType_instance2],...)
该函数用于连接多个XMLType实例,并生成新的XMLType实例。
示例:
selectxmlconcat(xmltype('1'),xmltype('2'),xmltype('3')) fromdual
12.XMLSEQUENCE(xmltype_instance)
该函数用于返回XMLType实例中顶级节点以下的VARRAY元素。
示例:
selectextractvalue(column_value,'/row/医嘱内容')医嘱内容 fromtable(xmlsequence(extract((selectvalue(a) fromxmltablea whererownum=1), '/root/detail/row')))
13.UPDATEXML(XMLType_instance,Xpath_string,value_expr)
该函数用于更新特定XMLType实例相应的节点路径的内容
示例:
selectupdatexml(xmltype('1名字12名字2'),'/root/row[no=2]/name','新名字') fromdual
14.XMLTRANSFORM(xmltype_instance,xsl_ss)
该函数用于将XMLType实例按照XSL样式进行转换,并生成新的XMLType实例
15.DELETEXML(XMLType_instance,Xpath_string)
该函数用于删除特定XMLType实例相应的节点路径的内容
16.XML转换表
SELECT*FROMXMLTABLE('$SQ/root/detail/row'PASSING (selectvalue(a)fromxmltablea)ASSQ COLUMNS医嘱IDVARCHAR2(50)PATH'/row/医嘱ID', 医嘱内容VARCHAR2(200)PATH'/row/医嘱内容', 频次VARCHAR2(200)PATH'/row/频次', 用法VARCHAR2(200)PATH'/row/用法') orderby医嘱ID
基本就是这样了,小编细心帮大家整理了一下代码格式,希望能帮到大家。