0

LOB (Large OBject) 列に XML コンテンツ (2000 バイト未満) があります。以前dbms_lob_substr(messagebody)は実際の XML コンテンツを取得していましたが、特定のノードの正確な値を取得する必要があります。

例えば。

<first name>xyz</first name>
<last name>abcd</last name>

say の値が必要です<first name>。どうすればこれを達成できますか?

4

1 に答える 1

1

XML にルート ノードがないように見えますか? XML データが表示されているとおりである場合、XMLTable() 関数を取得して、ダミーのルート ノードに配置すると、次のように解析できます。

select x.firstname
  from mytable,
  xmltable(
   '/rootnode'
   passing xmltype('<rootnode>'||myclobcol||'</rootnode>')
   columns
      firstname varchar2(100) path 'firstname'
  ) x

同時に複数の値を取得する必要がある場合は、columns 句に追加するだけです。

select x.*
  from mytable,
  xmltable(
   '/rootnode'
   passing xmltype('<rootnode>'||myclobcol||'</rootnode>')
   columns
      firstname varchar2(100) path 'firstname',
      lastname  varchar2(100) path 'lastname',
      middleini varchar2(10)  path 'middleinitial'
  ) x
于 2014-09-01T08:07:03.467 に答える