XMLSERIALIZE 演算�

XMLSERIALIZE�XML型�情報を文字型�情報�変��るSQL/XML演算���。�れ�Derby XML値を変��る唯一�方法��。

é‡?è¦?: 直列化ã?¯SQL/XMLã?®ç›´åˆ—化è¦?則ã?«æ²¿ã?„ã?¾ã?™ã€‚ Derbyã?¯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ã?®å€¤ã‚’最上ä½?ã?®çµ?果セットã?§å?–å¾—ã?—よã?†ã?¨ã?™ã‚‹ã?¨ã€?Derbyã?¯ã‚¨ãƒ©ãƒ¼ã‚’挙ã?’ã?¾ã?™ã€‚ Derbyã?¯XML値を暗黙裡ã?«ç›´åˆ—化ã?—ã?¾ã?›ã‚“。

æ§‹æ–‡

XMLSERIALIZE ( xml値� AS 文字情報型 )
xml値�
ã?‚らゆるDerby XML値をå?–ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚XMLQUERYã?«ã‚ˆã‚‹çµ?æžœã?®XMLã?®çµ?æžœã?®ä¸¦ã?³ã?§ã‚‚ã?‹ã?¾ã?„ã?¾ã?›ã‚“。xml値å¼?ã?«ãƒ‘ラメータを指定ã?™ã‚‹ã?“ã?¨ã?¯ã?§ã??ã?¾ã?›ã‚“。

文字情報型
CHAR�VARCHAR�LONG VARCHAR�る��CLOB等��SQL�文字列型を指定���れ��り��ん。 有効�文字列型�指定�れ����場��Derby�エラーを挙���。

例

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

利用上�覚書

Derbyã?«ã?¦XML機能ã?Œå‹•作ã?™ã‚‹ã?«ã?¯ã€?Apache Xercesã?®ã‚ˆã?†ã?ªJAXP構文解æž?器ã?¨Apache Xalanã?ŒJavaã?®ã‚¯ãƒ©ã‚¹ãƒ‘スã?«è¨˜è¿°ã?•れã?¦ã?„ã‚‹å¿…è¦?ã?Œã?‚りã?¾ã?™ã€‚クラスパスã?«è¨˜è¿°ã?Œã?ªã?‹ã?£ã?Ÿå ´å?ˆã€?XMLSERIALIZEを使ã?£ã?Ÿã?¨ã??ã?«ã‚¨ãƒ©ãƒ¼ã?Œç™ºç”Ÿã?—ã?¾ã?™ã€‚