0

在 Oracle 表中有一个 XMLTYPE 列,我想使用 UpdateXML 方法更新一些 xml 元素的值,但是由于应用在不是父元素的 xml 元素上的命名空间,我在这样做时遇到了麻烦。我的 elmenets 的 xml 结构看起来像:

<a>
  <b xmlns="urn:www.someSite.com/myModel">
    <c>my value</c>
  </b>
</a>

和以下形式的更新它不起作用:

UPDATE myTable 
  SET myColumn = UpdateXML(myColumn, '/a/b/c','other value', 'xmlns="urn:www.someSite.com/myModel"');
4

1 回答 1

3

这个帖子差不多,但是更丑。。。

UPDATE myTable
   SET myColumn = updatexml(myColumn ,
                 '/a/*',
                 updatexml(extract(myColumn , '/a/*'),
                           'b/c/text()',
                           'my new value',
                           'xmlns=urn:www.someSite.com/myModel'));

编辑:如果你有一个以上的b元素,a你将不得不改变整个文本a而不是每个孩子,所以你可以尝试:

UPDATE myTable
   SET myColumn = updatexml(myColumn ,
                 '/a/text()',
                 updatexml(extract(myColumn , '/a/*'),
                           'b/c/text()',
                           'my new value',
                           'xmlns=urn:www.someSite.com/myModel'));
于 2012-04-02T13:34:44.493 回答