AI智能
改变未来

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

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

<name></name>

):
操作DAT_DOCUMENT表,更新为生产测试设备

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

方式二(针对字段形如

<name/>

):

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

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

update DAT_DOCUMENT dset DOCUMENT_DATA = UpdateXML(d.DOCUMENT_DATA,\'/root/text_useCompany_display\',\'<text_useCompany_display datatype=\"text\" vtype=\"value\">\' || extractvalue(d.document_data,\'/root/empCompany\') || \'</text_useCompany_display>\')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 VBELNfrom DAT_DOCUMENT t

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

UPDATE DAT_DOCUMENT tSET DOCUMENT_DATA = INSERTCHILDXML(DOCUMENT_DATA,\'/root\',\'versions\',XMLType(\'<versions>v3</versions>\'))WHERE t.form_name = \'SD16\'
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Oracle增加、更新、删除、查询xml节点