Oracle增加、更新、删除、查询xml节点

这里整理下项目开发中用到了SQL对数据库中XML类型字段增删改查的操作,好记性不如烂笔头,特此整理如下。
1、Oracle更新XML字段的方式整理如下:
方式一(针对字段形如 ):
操作DAT_DOCUMENT表,更新为生产测试设备

update DAT_DOCUMENT t
    set DOCUMENT_DATA = UpdateXML(t.DOCUMENT_DATA,
                                  '/root/serviceObject',
                                  '生产测试设备')
  where  t.form_name = 'PD00007' 

方式二(针对字段形如 ):

update DAT_DOCUMENT t
    set DOCUMENT_DATA = UpdateXML(t.DOCUMENT_DATA,
                                  '/root/serviceObject',
                                  '' || '生产测试设备' || '')
  where  t.form_name = 'PD00007' 

*方式三(动态替换字段,将xml中text_useCompany_display值替换成empCompany值)

update DAT_DOCUMENT d
    set DOCUMENT_DATA = UpdateXML(d.DOCUMENT_DATA,
                                  '/root/text_useCompany_display',
                                  '' || extractvalue(d.document_data,'/root/empCompany') || '')
  where d.form_name = 'PD00007'

oracle中"||“用于拼接字符串,相当于SQLServer中的字符串的连接符”+"
2、Oracle删除XML字段的方式整理如下:
删除root目录下的printFlag字段

UPDATE DAT_DOCUMENT t SET DOCUMENT_DATA =
   DELETEXML(DOCUMENT_DATA,
   '/root/printFlag')
   WHERE   t.form_name = 'PD00007'

3、Oracle查询XML字段的方式整理如下:
从DAT_DOCUMENT中查询POSNR,KWMENG,VBELN字段

select EXTRACTVALUE(DOCUMENT_DATA, '/root/POSNR') as POSNR,
       EXTRACTVALUE(DOCUMENT_DATA, '/root/KWMENG') as KWMENG,
       EXTRACTVALUE(DOCUMENT_DATA, '/root/VBELN') as VBELN
  from DAT_DOCUMENT t

4、Oracle增加XML字段的方式整理如下:
在DAT_DOCUMENT表中增加versions字段

UPDATE DAT_DOCUMENT t
   SET DOCUMENT_DATA = INSERTCHILDXML(DOCUMENT_DATA,
                                      '/root',
                                      'versions',
                                      XMLType('v3'))
 WHERE t.form_name = 'SD16'

你可能感兴趣的:(数据库)