[Oracle] XMLSchema基づかないXMLType列を含む表の作成方法 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

XMLSchemaに基づかないXMLType列を含む表を作成する方法の基本的な例を以下にまとめます。
1.ディレクトリオブジェクトを作成する。
XML文書を置くディレクトリにアクセスするためにディレクトリオブジェクトを作成します。

CREATE DIRECTORY XDB_DIR AS 'C:\Oracle\XDB'
/

2.XMLType列を含む表を作成する。

XML文書を格納する列をXMLType型として表を定義します。


CREATE TABLE TEST2 ( ID NUMBER(10), TEST2_XML XMLType )
/

3.XMLデータを登録する。

XML文書を登録します。


ここではXMLType関数とBFILE関数を利用してXML文書ファイルから登録しています。

INSERT INTO TEST2 VALUES ( 1, XMLType( BFILENAME( 'XDB_DIR', 'test2.xml' ), nls_charset_id( 'JA16SJIS' ) ) )
/

C:\Oracle\XDB\test2.xml
<TEST>
  <NAME>Tiger</NAME>
  <ADDRESS>London</ADDRESS>
</TEST>


このようにXMLSchemaに基づかないXMLTypeを定義したとしても、XML文書を登録する際には整形式であるかどうかはチェックされます。


故に、整形式でないXML文書を登録しようとすると、

ORA-31011: XML解析に失敗しました
ORA-19202: XML処理
LPX-00240: element-start tag is not well formed中にエラーが発生しました

が発生します。



【関連エントリ】
[Oracle] XMLTypeへのXML文書の格納 2005/08/10
[Oracle] XMLSchemaに基づいたXMLType列を含む表の作成方法 2005/08/15
[Oracle] XMLSchema基づかないXMLType列を含む表の作成方法 2005/08/22
[Oracle] XMLを見やすく整形して出力する方法 2005/12/07