XML エクステンダーを使用して、原形の XML 文書を XML 列に挿入することができます。 サイド表を定義する場合、XML エクステンダーは自動的にこれらの表を更新します。 XML 文書を直接保管する場合、XML エクステンダーは基本タイプを XML タイプとして保管します。
タスクの概説:
XML エクステンダーには、XML 文書を保管するための 2 つの方式が備わっています。 それらは、デフォルト・キャスト関数と保管 UDF です。 表 8 は、それぞれの方式をいつ使用するかを示しています。
基本タイプ | 次のものとして DB2 に保管する | ||
---|---|---|---|
XMLVARCHAR | XMLCLOB | XMLFILE | |
VARCHAR | XMLVARCHAR() | N/A | XMLFileFromVarchar() |
CLOB | N/A | XMLCLOB() | XMLFileFromCLOB() |
FILE | XMLVarcharFromFile() | XMLCLOBFromFile() | XMLFILE |
SELECT 文節内で使用されるキャスト | 戻りタイプ | 説明 |
---|---|---|
XMLVARCHAR(VARCHAR) | XMLVARCHAR | VARCHAR のメモリー・バッファーからの入力 |
XMLCLOB(CLOB) | XMLCLOB | CLOB または CLOB ロケーターのメモリー・バッファーからの入力 |
XMLFILE(VARCHAR) | XMLFILE | ファイル名だけを保管する |
例: 以下のステートメントは、 キャストされた VARCHAR タイプを XMLVARCHAR タイプに挿入します。
INSERT INTO sales_tab VALUES('123456', 'Sriram Srinivasan', db2xml.XMLVarchar(:xml_buff))
表 10 は、XML エクステンダーに備わっている保管関数を示しています。
保管ユーザー定義関数 | 戻りタイプ | 説明 |
---|---|---|
XMLVarcharFromFile() | XMLVARCHAR | XML 文書をサーバー上のファイルから読み取り、XMLVARCHAR タイプの値を戻します。 |
XMLCLOBFromFile() | XMLCLOB | XML 文書をサーバー上のファイルから読み取り、XMLCLOB タイプの値を戻します。 |
XMLFileFromVarchar() | XMLFILE | XML 文書をメモリーから VARCHAR として読み取り、それを外部ファイルに書き込んで、 XMLFILE タイプの値 (ファイル名) を戻します。 |
XMLFileFromCLOB() | XMLFILE | XML 文書をメモリーから CLOB または CLOB ロケーターとして読み取り、 それを外部ファイルに書き込んで、XMLFILE タイプの値 (ファイル名) を戻します。 |
例: 以下のステートメントは、 XMLCLOBFromFile() 関数を XMLCLOB として使用して、レコードを XML 表に保管します。
EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER) VALUES( '1234', 'Sriram Srinivasan, XMLCLOBFromFile('c:\dxx\samples\cmd\getstart.xml'))
上記の例では、 XML オブジェクトが c:\dxx\samples\cmd\getstart.xml という名前のファイルから、 表 SALES_TAB 内の列 ORDER にインポートされます。