这里整理下项目开发中用到了SQL对数据库中XML类型字段增删改查的操作,好记性不如烂笔头,特此整理如下。
1、Oracle更新XML字段的方式整理如下:
方式一(针对字段形如 <name></name>
):
操作DAT_DOCUMENT表,更新为生产测试设备
update DAT_DOCUMENT t
set DOCUMENT_DATA = UpdateXML(t.DOCUMENT_DATA,
'/root/serviceObject',
'<serviceObject>生产测试设备</serviceObject>')
where t.form_name = 'PD00007'
方式二(针对字段形如 <name/>
):
update DAT_DOCUMENT t
set DOCUMENT_DATA = UpdateXML(t.DOCUMENT_DATA,
'/root/serviceObject',
'<serviceObject>' || '生产测试设备' || '</serviceObject>')
where t.form_name = 'PD00007'
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('<versions>v3</versions>'))
WHERE t.form_name = 'SD16'