!!!DB2 XML DB (pureXML) [DB2][XML][XQuery] *DB2 XQuery !!ステートメント終了文字の変更 *DB2 コマンド・ウィンドウで、db2 -td~ コマンド (-td~ オプションを指定したdb2 コマンド) を発行して DB2 コマンド行プロセッサーを開始 *-td オプションは、ティルド (~) をステートメント終了文字として設定 *。ネーム・スペース宣言の終了文字もセミコロンであるため、デフォルトのセミコロン(-t オプション) 以外の終了文字を指定することによって、ネーム・スペース宣言を使用するステートメントまたは照会が誤って解釈されないようにします ::IBM DataStudio での設定 {{ref_image xmldb01.jpg}} !!XML データを格納する DB2 データベースおよび表を作成 *XML データを保管または索引付けする場合、主キーは不要 create table android_manifest(apk varchar(255) not null primary key , manifest xml)~ !!XML データに索引を作成 *述部および文書をまたいだ結合で頻繁に使用される XML エレメントまたは属性に索引 *リレーショナル索引および XML データに対する索引は両方とも、列を索引付け *リレーショナル索引が列全体に索引を付けるのに対して、XML データに対する索引は列の一部に索引を付ける *XML 列のどの部分に索引を付けるかを、XML パターン (限定された XPath 式) を指定 *索引付きの値が格納されるデータ・タイプを指定する必要もある *単一の XML 列のみ索引を付けられます。複合索引はサポートされていません create index package_xmlidx on android_manifest(manifest) generate key using xmlpattern 'declare default element namespace "http://schemas.android.com/apk/res/android"; /manifest/@package' as sql varchar hashed !!XML タイプ列に XML 文書を挿入 *整形式 XML 文書は、INSERT SQL ステートメントを使用して、XML タイプ列に挿入 *ほとんどの場合、ストリング・データを XML データ・タイプのターゲットに直接割り当てることはできません。まず XMLPARSE 関数を使用してそのデータを明示的に構文解析する必要があります *INSERT、UPDATE、または DELETE 操作では、XMLPARSE 関数を明示的に呼び出さなくても、ストリング・データを XML 列に接割り当てることができます *ストリング・データは暗黙的に構文解析されます insert into android_manifest(apk, manifest) values ('info.typea.eitangoroid.free', ' ')~ !!レコードが正常に挿入されたことを確認 select * from android_manifest~ ::IBM DataStudio で確認 {{ref_image xmldb02.jpg}}