XMLQUERY?????????

XMLQUERY???SQL??????XML?????????????????????????????????????????????SQL/XML??????????????????

XMLQUERY?????????????????????????????????????????????????????????XML?????????????????????????????????DerbyXML????????????

??????

XMLQUERY ( xquery?????????????????????
    PASSING BY REF xml?????? 
    [ RETURNING SEQUENCE [ BY REF ] ]
    EMPTY ON EMPTY
    )
xquery?????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????(??????????????????)???????????????????????????????????????Derby?????????????????????????????? ?????????xquery???????????????????????????Apache Xalan?????????????????????XPath????????????????????????????????????Derby??????????????????XML?????????????????????????????????Apache Xalan?????????????????????Xalan???XQuery??????????????????????????????????????????Derby???????????????????????????????????????????????? ??????Xalan?????????????????????????????????????????????????????????????????????Derby???Xalan???????????????????????????????????????SQLException????????????????????????????????? XPath?????????XQuery????????????????????????????????????Web???????????????????????????????????????http://www.w3.org/TR/xpath???http://www.w3.org/TR/xquery/
xml??????
?????????XML???????????????????????????????????????????????????SQL/XML??????????????????????????????????????? xml????????????????????????????????????????????????????????? Derby??????????????????????????????XML?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????Derby???XMLQUERY??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Derby??????????????????????????????
BY REF
????????????????????????????????????????????????Derby???????????????????????????????????????????????????????????????BY REF?????????????????????????????????????????????????????????????????????????????????????????????????????????XMLQUERY?????????????????????????????????????????????????????????????????????????????????????????????????????????SQL/XML????????????????????????????????????
RETURNING SEQUENCE
????????????????????????????????????????????????Derby???XMLQUERY?????????????????????????????????????????????XML??????????????????????????????SEQUENCE???????????????????????????????????????????????????????????????????????????????????????????????????XMLQUERY?????????????????????????????????????????????XML????????????????????????????????????????????????????????????SQL/XML????????????????????????????????????
EMPTY ON EMPTY
???????????????????????????????????????????????????XMLQUERY???????????????????????????????????????????????????????????????????????????????????????XMLQUERY??????????????????????????????????????????????????????XMLQUERY????????????null?????????????????????????????????????????????????????????????????????????????????????????????Derby?????????????????????????????????XML????????????????????????

XMLQUERY????????????????????????XML?????????????????? ?????????XML?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????XMLQUERY?????????????????????????????????XML??????????????????????????????????????????XML??????XMLQUERY??????????????????????????????????????????????????????????????? XML??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????XMLSERIALIZE ????????????????????????????????????????????????????????????????????????????????????????????????

???

x_table????????????xcol?????????XML?????????????????????age?????????20???????????????students????????????????????????????????????????????????
SELECT ID,
    XMLSERIALIZE(
        XMLQUERY('//student[@age>20]' PASSING BY REF xcol EMPTY ON EMPTY)
    AS VARCHAR(50))
FROM x_table

????????????????????????XMLQUERY??????????????????????????????????????????????????????????????????????????????x_table??????????????????????????????????????????
x_table?????????xcol?????????XML?????????????????????BC??????????????????????????????????????????????????????????????????????????????
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?????????????????????????????????????????????????????????????????????