Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101934347
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-14 12:38:00

    来源:IBM  

重要事项:必须在路径的末尾指定 text()。这一步确保即使是空元素(即不具有现有文本节点的元素)也进行更新。如果省略了 text() 且不存在要替换的现有文本值,更新命令就会失败。

使用 XMLUpdate 追加子节点。

Call DB2XMLFUNCTIONS.XMLUPDATE (
'

Santa Clara

',
'Select info from XMLCustomer where cid=1006',
'update XMLCustomer set info=? where cid=1006',?,?);

注意:新节点 不在任何名称空间中。

使用 XMLUpdate 将更新的 XML 插入新行。

Call DB2XMLFUNCTIONS.XMLUPDATE (
'

Marja Soininen

1008
',
'Select info from XMLCustomer where cid=1006',
'insert into XMLCustomer (cid, info ) values (1008, cast( ? as xml))',?,?);

使用 XMLUpdate 删除节点。

Call DB2XMLFUNCTIONS.XMLUPDATE (
'

',
'Select info from XMLCustomer where cid=1006',
'update XMLCustomer set info=? where cid=1006',?,?);

当更新元素中没有设置 @action 时,就默认执行替换操作。

Call DB2XMLFUNCTIONS.XMLUPDATE (
'

910

',
'Select info from XMLCustomer where cid=1006',
'update XMLCustomer set info=? where cid=1006',?,?);

以下示例展示带有无效名称空间或带有没有前缀的名称空间的 XMLUpdate:

Call DB2XMLFUNCTIONS.XMLUPDATE (
'

910

',
'Select info from XMLCustomer where cid=1006',
'update XMLCustomer set info=? where cid=1006',?,?);

该查询返回设置为 1 的错误,以及如下错误消息:

以下示例展示的 XMLUpdate 在更新元素中有一个遗漏的路径:

Call DB2XMLFUNCTIONS.XMLUPDATE (
'  (20+?)*32-? ',
'Select info from XMLCustomer where cid=1006',
'update XMLCustomer set info=? where cid=1006',?,?);

该查询返回设置为 1 的错误,以及如下错误消息:

使用相同名称空间中的新节点替换某个节点。

Call DB2XMLFUNCTIONS.XMLUPDATE (
			
'


MarjaSoininen


',
'Select info from XMLCustomer where cid=1008',
'insert into XMLCustomer (cid, info ) values (1007, cast( ? as xml))',?,?);

结束语

本文描述的更新存储过程允许对本机存储在数据库中的 XML 文档进行部分更新。下一篇文章将深度挖掘和具体研究新的 XML 支持对迁移现有基于 XML 的应用程序的重大意义。

致谢

感谢 Matthias Nicola、Bert Van der Linden、Irina Kogan、Annie Wang、Ying Chen 和 Xiaoli Du 在撰写这篇文章时给予的帮助。

阅读(538) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~