2

以下に説明するように、Oracle XML DB (11g R2) の問題に対処してきました。

「xml_document」という名前の XMLType 列を持つテーブルで、次の xml ドキュメントがあるとします。

<?xml encoding="utf-8" ?>
<books>
    <book>
        <author>AUTHORNAME1</author>
        <title>TITLE1</title>
        <price>12.33</price>
    </book>
    <book>
        <author>AUTHORNAME2</author>
        <title>TITLE2</title>
        <price>9.55</price>
    </book>
    <book>
        <author>AUTHORNAME3</author>
        <title>TITLE3</title>
        <price>15.00</price>
    </book>
</books>

ここでやりたいことは、すべての本のタイトルを「-expensive」タグを追加して「price > 10」に置き換えることです。

' for $book in ora:view("XML_TABLE")//books/book where $book/price > 10 return replace value of node $book/title with concat($book/title/text(),"-expensive") '

したがって、Oracle SQLDeveloper でクエリを実行すると、結果の XML コンテンツは次のようになります。

<?xml encoding="utf-8" ?>
<books>
    <book>
        <author>AUTHORNAME1</author>
        <title>TITLE1-expensive</title>
        <price>12.33</price>
    </book>
    <book>
        <author>AUTHORNAME2</author>
        <title>TITLE2</title>
        <price>9.55</price>
    </book>
    <book>
        <author>AUTHORNAME3</author>
        <title>TITLE3-expensive</title>
        <price>15.00</price>
    </book>
</books>

私はすでに UPDATEXML()、XMLQUERY()、および XMLTABLE() プロシージャでそれを実行しようとしましたが、まだ一歩前進できません。

どんな助けでも大歓迎です。

4

1 に答える 1

0
  • whenXQueryステートメントはありません(ただし、Oracle XQueryについてはわかりません)。試してみてくださいwhere
  • 文字列の連結は、 -operatorconcat(str1, [...], str2)ではなく、を使用して行われます。+

このクエリを試してください:

for $book in ora:view("XML_TABLE")//book
where $book/price > 10
return
  replace value of node $book/title
  with concat($book/title/text(), "-expensive")
于 2011-11-09T21:34:14.687 に答える