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 に答える