XMLQUERYã?¯SQLã?«ã?¦XMLã?®å€¤ã‚’å•?ã?„å?ˆã‚?ã?›ã‚‹ã?“ã?¨ã?Œã?§ã??ã‚‹SQL/XML演算å?ã?§ã?™ã€‚
XMLQUERY演算å?ã?«ã?¯äºŒã?¤ã?®å¼•æ•°ã?Œã?‚りã?¾ã?™ã€‚片方ã?¯XMLå•?å?ˆã?›å¼?ã?§ã€?ã‚‚ã?†ä¸€ã?¤ã?¯DerbyXML値ã?§ã?™ã€‚
XMLQUERY ( xqueryæ–‡å—列リテラル PASSING BY REF xml値å¼? [ RETURNING SEQUENCE [ BY REF ] ] EMPTY ON EMPTY )
XMLQUERY演算å?ã?®çµ?æžœã?¯ã€?XMLåž‹ã?®å€¤ã?§ã?™ã€‚ çµ?æžœã?¯XMLノードや値ã?®ä¸¦ã?³ã‚’表ã?—ã?¾ã?™ã€‚æ–‡å—列ã?®ã‚ˆã?†ã?ªå€¤ã?¯ã€?çµ?æžœã?®ä¸¦ã?³ã?®ä¸€éƒ¨ã?¨ã?ªã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚XMLQUERY演算å?ã?®çµ?æžœã?¯æ•´å½¢å¼?ã?®XML文書ã?§ã?‚ã‚‹ã?“ã?¨ã?Œä¿?éšœã?•れã?šã€?XML列ã?«XMLQUERY演算å?ã?®çµ?果を挿入ã?§ã??ã?ªã?„ã?“ã?¨ã?Œã?‚りã?¾ã?™ã€‚ XML列ã?«çµ?果を記録ã?™ã‚‹ã?Ÿã‚?ã?«ã?¯ã€?ã??ã?®çµ?æžœã?¯å”¯ä¸€ã?¤ã?®é …目をæŒ?ã?¤ä¸¦ã?³ã?§ã€?ã??ã?®é …ç›®ã?Œæ•´å½¢å¼?ã?®æ–‡æ›¸ãƒŽãƒ¼ãƒ‰ã?§ã?ªã?‘れã?°ã?ªã‚Šã?¾ã?›ã‚“。 çµ?æžœã?¯XMLSERIALIZE 演算å?ã?«ã‚ˆã?£ã?¦ç›´åˆ—化ã?™ã‚‹ã?“ã?¨ã?«ã‚ˆã?£ã?¦ã?®ã?¿è¦‹ã‚‰ã‚Œã‚‹ã‚ˆã?†ã?«ã?§ã??ã?¾ã?™ã€‚
SELECT ID, XMLSERIALIZE( XMLQUERY('//student[@age>20]' PASSING BY REF xcol EMPTY ON EMPTY) AS VARCHAR(50)) FROM x_tableã?“ã?®å•?å?ˆã?›ã?§ã?¯ã€?XMLQUERY演算å?ã?Œå®Ÿéš›ã?«çµ?果を返ã?™ã?‹å?¦ã?‹ã?«ã?‹ã?‹ã‚?らã?šã€?çµ?æžœã?«ã?¯x_tableã?®å…¨è¡Œæ¯Žã?«çµ?果行ã?Œã?‚りã?¾ã?™ã€‚
SELECT ID, XMLSERIALIZE( XMLQUERY('string(//student[text() = "BC"]/@age)' PASSING BY REF xcol EMPTY ON EMPTY) AS VARCHAR(50)) FROM x_table WHERE XMLEXISTS('//student[text() = "BC"]' PASSING BY REF xcol)ã?“ã?®å•?å?ˆã?›ã?§ã?¯çµ?æžœã?«ã?¯ã€?x_tableä¸ã?®BCã?¨ã?„ã?†å??å‰?ã?®ç”Ÿå¾’ã?®è¡Œã?®ã?¿ã?‚りã?¾ã?™ã€‚
Derbyã?¯XMLã?®æ©Ÿèƒ½ã‚’動作ã?•ã?›ã‚‹ã?Ÿã‚?ã?«ã€?Apache Xercesã?®ã‚ˆã?†ã?ªJAXP構文解æž?器ã?¨Apache Xalanã?ŒJavaã?®ã‚¯ãƒ©ã‚¹ãƒ‘スã?«è¨˜è¿°ã?•れã?¦ã?„ã‚‹å¿…è¦?ã?Œã?‚りã?¾ã?™ã€‚JAXP構文解æž?器ã€?Xalanã?®ä½•れã?‹ã?Œã‚¯ãƒ©ã‚¹ãƒ‘スã?«è¨˜è¿°ã?•れã?¦ã?„ã?ªã?„å ´å?ˆã?«ã€?XMLQUERY演算å?を利用ã?—よã?†ã?¨ã?™ã‚‹ã?¨ã‚¨ãƒ©ãƒ¼ã?Œç™ºç”Ÿã?—ã?¾ã?™ã€‚