• 検索結果がありません。

半構造化記憶域(ハイブリッド記憶域)

ドキュメント内 XML DBファーストステップ (ページ 53-57)

4 XMLTYPE記憶域別テクニック

4.5 半構造化記憶域(ハイブリッド記憶域)

18 </xsd:schema>';

19 BEGIN

20 dbms_xmlschema.registerSchema(

21 schemaURL => 'http://www.oracle.com/so4.xsd', 22 schemaDoc => doc,

23 gentypes => true, 24 gentables => false);

25 END;

26 /

リスト4-18 XMLスキーマの登録

SQL> CREATE TABLE step4 OF XMLTYPE

2 XMLSchema "http://www.oracle.com/so4.xsd"

3 ELEMENT "申込";

リスト4-19 XMLスキーマに基づいたXMLType表の作成

リスト 4-20、4-21 のように’/申込/契約日’の次に来る要素の中身が検証されな くなるので、整形式を保っていれば自由な構造で入力することが可能です。この 部分に対しては完全に非構造化記憶域の扱いになるので、検索を高速化させるた めに適切な索引を使用する必要があります。

SQL> INSERT INTO step4

2 VALUES(XmlType('<?xml version="1.0" encoding="EUC-JP"?>

3 <申込 xmlns="http://www.oracle.com/so4.xsd"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="http://www.oracle.com/so4.xsd

6 http://www.oracle.com/so4.xsd" NO="000123">

7 <契約者>オラクル太郎</契約者>

8 <契約日>2005-12-25</契約日>

9 <サービス CODE="G2456">

10 <サービス名>Grid提案サポート</サービス名>

11 <開始日>2006-01-23</開始日>

12 <終了日>2007-05-23</終了日>

13 </サービス>

14 </申込>'));

リスト4-20 XML文書の挿入1

SQL> INSERT INTO step4

2 VALUES(XMLTYPE('<?xml version="1.0" encoding="EUC-JP"?>

3 <申込 xmlns="http://www.oracle.com/so4.xsd"

4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

5 xsi:schemaLocation="http://www.oracle.com/so4.xsd 6 http://www.oracle.com/so4.xsd"

7 NO="000223">

8 <契約者>オラクル太郎</契約者>

9 <契約日>2005-12-25</契約日>

10 <社外セミナー>

11 <コース名>XML DB 技術セミナー</コース名>

12 <担当者リスト>

13 <現場責任>山田 一郎</現場責任>

14 <講師>中田 英俊</講師>

15 </担当者リスト>

16 <場所>東京都千代田区 GG 21階</場所>

17 <メモ>ノートPC必須、

18 オラクルクライアントがインストール済みであること。</メモ>

19 </社外セミナー>

20 </申込>'));

リスト4-21 XML文書の挿入2

半構造化記憶域の使用により、’/申込/契約日’以下の要素が変化しても受け入れ 可能になっていることを確認できます。

下記の XML フラグメント1、2は、XML ツリー構造が全く異なりますが、

XML スキーマで該当する要素の型を SQLType=”CLOB”で設定してあるので、入 力される XML フラグメントが整形式である以上、どんな構造でも登録が許され ます。

<サービス CODE="G2456">

<サービス名>Grid提案サポート</サービス名>

<開始日>2006-01-23</開始日>

<終了日>2007-05-23</終了日>

</サービス>

リスト4-22 XMLフラグメント1

<社外セミナー>

<コース名>XML DB 技術セミナー</コース名>

<担当者リスト>

<現場責任>山田 一郎</現場責任>

<講師>中田 英俊</講師>

</担当者リスト>

<場所>東京都千代田区 GG 21階</場所>

<メモ>ノートPC必須、

オラクルクライアントインストール済みであること。

</メモ>

</社外セミナー>

リスト4-23 XMLフラグメント2

例として、XMLフラグメント2を検索条件にしたXML文書の検索を実行しま

す。

SQL> SELECT extractValue(value(s),'/申込/@NO',

2 'xmlns="http://www.oracle.com/so4.xsd"') Result 3 FROM step4 s

4 WHERE extractValue(value(s),

5 '/申込/社外セミナー/担当者リスト/現場責任',

6 'xmlns="http://www.oracle.com/so4.xsd"')='山田 一郎';

RESULT --- 000223

リスト4-24 内容の検索

半構造化データ要素の属性に対する検索が実行できました。

ドキュメント内 XML DBファーストステップ (ページ 53-57)

関連したドキュメント