使用SQL查询XML

时间:2012-06-21 22:08:38

标签: sql xml oracle

我试图查询oracle表中的xml文件来创建视图。我无法使用多个命名空间来查询数据。例如,planStructures是prd:namesspace的一部分,externalProductIdentifiers中的标识符是util:namespace的一部分。以下是用于查询的sql和xml文件的片段

    XMLTABLE (XMLNameSpaces( DEFAULT 'http://www.cigna.com/ifp/domains/product/2012/06'),'/planStructure'
                    PASSING root_planStructures.planStructure
                        COLUMNS
                            plnStrctExtPrdId           XMLTYPE         PATH  'externalProductIdentifiers',
                            plnStrctInfo                       XMLTYPE         PATH  'planStructureInformation',
                            clientInfo                 XMLTYPE         PATH  'clientInformation',
                            financialStruct            XMLTYPE         PATH  'financialStructure'
                            ) root_planStructure,


                            XMLTABLE (XMLNameSpaces( DEFAULT 'http://www.cigna.com/ifp/domains/product/2012/06'),'/externalProductIdentifiers'
                        PASSING root_planStructure.plnStrctExtPrdId
                        COLUMNS
                            ExtPrdIdUtilID              XMLTYPE         PATH    'identifier'
                            ) plnStrctPlnStrctExtPrdId

XMLTABLE (DEFAULT 'http://www.cigna.com/ifp/domains/utility/2012/06'), '/identifier'
                        PASSING plnStrctPlnStrctExtPrdId.ExtPrdIdUtilID
                        COLUMNS
                            idType                  VARCHAR2 (100)      PATH    '@type',
                            idDate                  VARCHAR2 (100)      PATH    '@date',
                            singleValueType         VARCHAR2 (100)          PATH    'singleValueID/@type',
                            singleValueDate         VARCHAR2 (100)          PATH    'singleValueID/@date',
                            singleValueID           VARCHAR2 (100)      PATH    'singleValueID'
                            ) externalProductIdentifiersID

示例xml片段:

<planStructures>
        <planStructure>
            <externalProductIdentifiers>
                <util:identifier type="HPS">
                    <util:singleValueID type="HPSPlanID">PPO50SC</util:singleValueID>
                </util:identifier>
                <util:identifier type="Colibrium">
                    <util:singleValueID type="ColibriumPlanID">PPO50SC</util:singleValueID>
                </util:identifier>
                <util:identifier type="Salesforce">
                    <util:singleValueID type="SalesforcePlanID">a0kV0000000SnSiIAK</util:singleValueID>
                </util:identifier>
            </externalProductIdentifiers>

0 个答案:

没有答案