欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle 中XML处理函数介绍

程序员文章站 2024-01-16 23:22:52
1. extract(xmltype_instance,xpath_string) 该函数用于返回xml节点路径下的相应内容 示例: 复制代码 代码如下:select...

1. extract(xmltype_instance,xpath_string)

该函数用于返回xml节点路径下的相应内容

示例:

复制代码 代码如下:
select extract(value(a),'/root/main') data from xmltable a ;

2. extractvalue(xmltype_instance,xpath_string)

该函数用于返回特定xml节点路径的数据

示例:

复制代码 代码如下:
select extractvalue(value(a),'/root/main/姓名') data from xmltable a ;

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文档。

示例:

复制代码 代码如下:
select sys_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",xmlforest(a.frequency_id as "频次id", a.frequency_name as "频次名称")))[]
from med_frequencydict a

8. xmlforest(value_expr1[,value_expr2],...)

该函数用于返回xml块

9. xmlelement(identifier[,xml_attribute_clause][,value_expr])

该函数用于返回xmltype的实例。其中参数identifier用于指定元素名,参数xml_attribute_clause用于指定元素属性子句,参数value_expr用于指定元素值。

示例:

复制代码 代码如下:
select xmlelement("row",xmlcolattval(a.frequency_code as "编码",a.frequency_name as "名称")) xml
from med_frequencydict a
where a.frequency_code = 'bid'

10. xmlcolattval(value_expr[,value_expr2],...)

该函数用于生成xml块,参数value_expr用于指定列名或者别名作为属性名。

示例: 

复制代码 代码如下:
select xmlelement("row",xmlcolattval(a.frequency_code as "编码", a.frequency_name as "名称")) xml
from med_frequencydict a
where a.frequency_code = 'bid'

11. xmlconcat(xmltype_instance1[,xmltype_instance2],...)

该函数用于连接多个xmltype实例,并生成新的xmltype实例。

示例:

复制代码 代码如下:
select xmlconcat(xmltype('1'), xmltype('2'), xmltype('3'))
from dual

12. xmlsequence(xmltype_instance)

该函数用于返回xmltype实例中*节点以下的varray元素。

示例:

复制代码 代码如下:
select extractvalue(column_value, '/row/医嘱内容') 医嘱内容
    from table(xmlsequence(extract((select value(a)
    from xmltable a
    where rownum = 1),
'/root/detail/row')))

13. updatexml(xmltype_instance,xpath_string,value_expr)

该函数用于更新特定xmltype实例相应的节点路径的内容

示例:

复制代码 代码如下:
select updatexml(xmltype('1名字12名字2'), '/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

基本就是这样了,小编细心帮大家整理了一下代码格式,希望能帮到大家。