XMLSERIALIZE 演算子 XMLSERIALIZEはXML型の情報を文字型の情報に変換するSQL/XML演算子です。これは XML値を変換する唯一の方法です。 XMLSERIALIZE operatoroperatorsXMLSERIALIZE XMLoperators, XMLSERIALIZE
直列化はSQL/XMLの直列化規則に沿います。 はXMLSERIALIZEの構文の一部しかサポートしないこともあいまって、XMLSERIALIZE演算子の結果が元のXMLと全く同じであることは保障されせん。 例えば、[xString]が整形式のXML文書を表す文字表現であるとして、次の文が発行されたとします。INSERT INTO x_table (id, xcol) VALUES (3, XMLPARSE(DOCUMENT '[xString]' PRESERVE WHITESPACE)); SELECT id, XMLSERIALIZE(xcol AS VARCHAR(100)) FROM x_table WHERE id = 3;

このときXMLSERIALIZE演算子の結果が、元の[xString]の値と同じである保障はありません。 XMLSERIALIZEの処理にてSQL/XMLの仕様に沿って何らかの変更が起きる可能性があります。 XMLSERIALIZEの結果が元の文字表現と同じであることもありますが、同じであることは保障されません。

問合せの最上位の結果セットにXMLSERIALIZE演算子が書かれた場合、XMLSERIALIZEにて文字情報型引数で指定した型に適用できるJDBCの全てのgetXXXメソッドによって結果を得ることができます。XMLSERIALIZE演算子を使わずにXMLの値を最上位の結果セットで取得しようとすると、はエラーを挙げます。 はXML値を暗黙裡に直列化しません。

構文XMLSERIALIZE ( xml値式 AS 文字情報型 )
xml値式
あらゆるDerby XML値を取ることができます。XMLQUERYによる結果のXMLの結果の並びでもかまいません。xml値式にパラメータを指定することはできません。

文字情報型
CHAR、VARCHAR、LONG VARCHARあるいはCLOB等の、SQLの文字列型を指定しなければなりません。 有効な文字列型が指定されなかった場合、はエラーを挙げます。

x_table表にて、xcolXML列の値を表示するには、次の文を書きます。SELECT ID, XMLSERIALIZE( xcol AS CLOB) FROM x_table JDBCを使ってこの結果を取り出すためには、JDBCのgetCharacterStream()やgetString()メソッドを使うことができます。

XMLQUERY演算子の結果を表示するには、次の文を書きます。SELECT ID, XMLSERIALIZE( XMLQUERY('//student[@age>20]' PASSING BY REF xcol EMPTY ON EMPTY) AS VARCHAR(50)) FROM x_table

利用上の覚書

にてXML機能が動作するには、Apache XercesのようなJAXP構文解析器とApache XalanがJavaのクラスパスに記述されている必要があります。クラスパスに記述がなかった場合、XMLSERIALIZEを使ったときにエラーが発生します。