DB2 XML Extender とは? (XML文書の合成 その1)

X Collection の逆の形になりますが、いくつかのテーブルからDADファイルの記述をもとにXML文書を作成することができます。

この合成され、作成されたXML文書は X Column のかたちでテーブルの1カラムに格納されます。


今回はオペレーション・ナビゲーターを使用してみましょう。

オペレーション・ナビゲーターを起動するとこんな画面になります。

左上のペインで「データベース」を選択すると以下のように右上のペインと下のペインに表示されるものが変わります。

「データベース」アイコンを右クリックすると出てくるサブメニューからか、下のペイン(「タスクパッド」と言います)から「SQLスクリプトの実行」を選択してください。

こんな画面が出てきますので「ファイル」-「開く」でSQL文が記述されているファイルを選択します。

直にSQL文を真中の白いところに書いて実行してもかまいません。

DB2 XML Extender 用にサンプルのファイルが用意されています。
/dxxsamples というディレクトリ上に getstart.exe というファイルがありますので、これをネットワークドライブ経由かFTPでPCのどこかのディレクトリに解凍してください。いくつかのSQLファイル(sqlが拡張子)ができます。

解凍したファイルの中から Setup.sql を選択します。

SQL文がたくさん出てきますが、若干の変更が必要です。
「編集」-「置き換え」で &SCHEMA を 接続ユーザーと同じ名前のスキーマ(=ライブラリー)に変更してください。このスキーマはあらかじめシステム上に存在している必要があります。「全置換」ボタンを押します。
もしまだ作成していない場合は一番最初に"CREATE SCHEMA XMLDEMO;"("XMLDEMO"はスキーマ[ライブラリー]の名前です)の一行を追加してください。

「実行」-「すべて」を選択してください。

実行中の画面です。
現在実行されているSQL文が常に青くフォーカスされています。個々のSQL文毎に結果が表示されていきます。デフォルトでは成功しなかった場合はそこでストップします。

終了したところの画面です。
この Setup.sql で、対話型で実行できないストアドプロシージャなどとその実行に必要なテーブルなどを作成しています。

次に C_SalesTab.sql を開きます。
Sales_Tab テーブルを作成します。「実行」から「すべて」を選択してSQL文を実行してください。

今度は RetevXml.sql を開きます。

前半は以前5250コマンド画面から行った X Collection の場合と同じです。
つまり、DTDファイルをDTD\REFテーブルに格納し、enable_collection を行います。1番目のSQL文(insert into db2xml.dtd_ref ...)と3番目のSQL文(CALL XMLDEMO.QZXADM('enable_collection', 'ASDOMINO', 'abc' ...)はほとんど同じです。enable_collection で行っていることは前とまったく同じことですので、まぎらわしくないように以前の'sales_ord'ではなく'abc'を使用しています。同じDADファイルを分解にも合成にも使用できる、ということです。

2番目のSQL文は、合成してできたXML文書を格納するためのテーブルを作成するものです。

DTDファイルDADファイルの内容はリンク先を見てみてください。

今回は「すべて」を実行してしまうと後半部がまずいので、enable_collection までを実行します。

実行するSQL文をマウス等で選択します。

以下のように「実行」-「選択済み」を実行してください。

下半分の結果が表示されるペインには以下のようなメッセージが出てきます。

データをINSERTします。

同じくSQL文を選択して、「実行」-「選択済み」を実行させます。

これで準備ができたことになります。

dxxRetriveXML ストアドプロシージャを使用します。5250コマンド画面の時と同じように、出力用のパラメータがあると実行できないために、対話型実行用に作成されたストアドプロシージャをかわりに実行します。

結果は以下のようになります。

ちゃんとXML文書ができているかどうかを、SELECTしてみて確認します。

下のところに一部が表示されているようにXML文書が出来ています。

5250コマンド画面の対話型SQL(STRSQLコマンドで表示)からも同様に確認できます。

[Top Pageに戻る]

Ads by TOK2