XMLの要素の順序にて取得する技(Oracle XML_DB) ちゃんとした版

はい、大分遅れましたが<a href="http://forthclover.blog56.fc2.com/blog-entry-132.html" target="_blank">以前にいっていた内容</a>をちゃんとのせます。

データとしては以前の<a href="http://forthclover.blog56.fc2.com/blog-entry-129.html" target="_blank">この記事</a>を参考にさせていただきたいと思います。

select
  extractvalue(value(compInfo), '/会社情報/会社/社名') as 会社名,
  extractvalue(value(detail), '/詳細/text()') as 事業内容詳細
from
  会社情報XMLテーブル compInfo,
  table(xmlsequence(extract(value(compInfo), '/会社情報/会社/事業内容/タイトル/詳細'))(+) detail

と同様として、かつ事業内容詳細ごとに順序を付けたい場合には、

select
  company_t.name,
  activity_t.seq_no,
  activity_t.detail
from
  会社情報XMLテーブル compInfo,
 ,XMLTable(
    '/会社情報'
      PASSING compInfo.Object_value
      COLUMNS
        name VARCHAR2(255) PATH '/会社情報/会社/社名/text()',
        activity_xml XMLType PATH '/会社情報/会社/事業内容/タイトル/詳細'
    ) AS company_t
 ,XMLTable(
    '/詳細'
      PASSING compInfo.Object_value
      COLUMNS
        SEQ_NO FOR ORDINALITY,
        detail VARCHAR2(255) PATH '/詳細/text()'
    )(+) AS activity_t

これで期待する結果としては、


株式会社エクスブリッジ 1  トリプルコストダウン戦略
      ・中国オフショア開発
      ・オープンソースソフトウェア
      ・コンポーネント指向
株式会社エクスブリッジ 1     ■事業部門向けソリューション
     AURORA 基幹.EAI ソリューション
    - 販売管理系
      見積,受注,売上,出荷モジュール
     - 購買管理系
      依頼,発注,仕入,入荷モジュール
     - 在庫管理系
      入庫,出庫,在庫モジュール
     ?必要なモジュールのみを選択
     ?モジュールを自由にカスタマイズ
     ?財務会計・EDIなどとの連動
株式会社エクスブリッジ 2     ■総務部門向けソリューション
     AURORA 総務.EAI ソリューション
     勤怠管理,備品管理,施設設備予約,
     経費精算,社内ファイル便,
     伝言管理,etc...
株式会社エクスブリッジ 3     ■経営陣向けソリューション
     OLAP/BIによる経営情報分析
     AURORA 基幹.EAIに蓄積された「売上」「仕入」データを分析するための仕組みを構築し、
     「顧客分析(CRM)」「商品分析(MD)」のノウハウを提供
     - OpenOLAP(オープンソース)
     - New WorkFRIEND(JBCC)
      ポータル(CMS)による知識経営
     CMSによる社内ポータル,コミュニティサイト構築を支援し、
     ナレッジマネージメントを成功に導きます
     得意先との知識・情報共有、社員間における
     知識・情報共有を効率的に実現し、ナレッジを
     有効に活用する経営を支援します

となるはずです。
はずってのが実行していないからってことでの保障です。

ちょっとXML_DBと真剣に向き合えばわかりやすくはなりますが、
XMLTable(
    '/会社情報'
      PASSING compInfo.Object_value
      COLUMNS
        name VARCHAR2(255) PATH '/会社情報/会社/社名/text()',
        activity_xml XMLType PATH '/会社情報/会社/事業内容/タイトル/詳細'
    ) AS company_t
のかしょで、
PATH '/会社情報/会社/事業内容/タイトル/詳細'をXMLType列として定義します。
ここでポイントは対象としているのが

    '/会社情報'
      PASSING compInfo.Object_value

ですので、1つのobject_valueつまりは1つのXMLの集まりの中には
PATH '/会社情報/会社/事業内容/タイトル/詳細'が複数存在することになり、
1行に複数件数の該当があるという形になりますので、
1回目のXMLTable無いでは「XMLType列」とします。
そして2回目のXMLTableでは、1回目に指定した「XMLType列」とした「activity_xml」を元にしており、このときには
XMLType列の値として、

      <詳細> 
        トリプルコストダウン戦略
            ・中国オフショア開発
            ・オープンソースソフトウェア
            ・コンポーネント指向
      </詳細> 


      <詳細> 
        ■事業部門向けソリューション
          AURORA 基幹.EAI ソリューション
          - 販売管理系
            見積,受注,売上,出荷モジュール
          - 購買管理系
            依頼,発注,仕入,入荷モジュール
          - 在庫管理系
            入庫,出庫,在庫モジュール
          ?必要なモジュールのみを選択
          ?モジュールを自由にカスタマイズ
          ?財務会計・EDIなどとの連動
      </詳細> 
      <詳細> 
        ■総務部門向けソリューション
          AURORA 総務.EAI ソリューション
          勤怠管理,備品管理,施設設備予約,
          経費精算,社内ファイル便,
          伝言管理,etc...
      </詳細> 
      <詳細> 
        ■経営陣向けソリューション
          OLAP/BIによる経営情報分析
          AURORA 基幹.EAIに蓄積された「売上」「仕入」データを分析するための仕組みを構築し、
          「顧客分析(CRM)」「商品分析(MD)」のノウハウを提供
          - OpenOLAP(オープンソース)
          - New WorkFRIEND(JBCC)
            ポータル(CMS)による知識経営
          CMSによる社内ポータル,コミュニティサイト構築を支援し、
          ナレッジマネージメントを成功に導きます
          得意先との知識・情報共有、社員間における
          知識・情報共有を効率的に実現し、ナレッジを
          有効に活用する経営を支援します
      </詳細> 


の2行分が入っており、それぞれの行にて「<詳細> </詳細> 」の中身を返す形になります。

判りにくいようであれば、

select
  company_t.*
from
  会社情報XMLテーブル compInfo,
 ,XMLTable(
    '/会社情報'
      PASSING compInfo.Object_value
      COLUMNS
        name VARCHAR2(255) PATH '/会社情報/会社/社名/text()',
        activity_xml XMLType PATH '/会社情報/会社/事業内容/タイトル/詳細'
    ) AS company_t

を実行してみてください。
結果として


株式会社エクスブリッジ    <詳細> 
    トリプルコストダウン戦略
      ・中国オフショア開発
      ・オープンソースソフトウェア
      ・コンポーネント指向
   </詳細> 
株式会社エクスブリッジ    <詳細> 
    ■事業部門向けソリューション
     AURORA 基幹.EAI ソリューション
     - 販売管理系
      見積,受注,売上,出荷モジュール
     - 購買管理系
      依頼,発注,仕入,入荷モジュール
     - 在庫管理系
      入庫,出庫,在庫モジュール
     ?必要なモジュールのみを選択
     ?モジュールを自由にカスタマイズ
     ?財務会計・EDIなどとの連動
   </詳細> 
   <詳細> 
    ■総務部門向けソリューション
     AURORA 総務.EAI ソリューション
     勤怠管理,備品管理,施設設備予約,
     経費精算,社内ファイル便,
     伝言管理,etc...
   </詳細> 
   <詳細> 
    ■経営陣向けソリューション
     OLAP/BIによる経営情報分析
     AURORA 基幹.EAIに蓄積された「売上」「仕入」データを分析するための仕組みを構築し、
     「顧客分析(CRM)」「商品分析(MD)」のノウハウを提供
     - OpenOLAP(オープンソース)
     - New WorkFRIEND(JBCC)
      ポータル(CMS)による知識経営
     CMSによる社内ポータル,コミュニティサイト構築を支援し、
     ナレッジマネージメントを成功に導きます
     得意先との知識・情報共有、社員間における
     知識・情報共有を効率的に実現し、ナレッジを
     有効に活用する経営を支援します
   </詳細> 

 

となるはずですよ。

何だかめっちゃ崩れていたのをとりあえず直しました(^_^;)
参考にしていただけた方にはご迷惑をおかけいたしました。