У меня есть таблица с одним столбцом как XML Clob.Я хочу извлечь атрибуты XML в виде столбцов - PullRequest
0 голосов
/ 26 апреля 2019

У меня ниже XML как данные, хранящиеся в 1 из столбцов в моей таблице.Я хочу извлечь все данные в VestingInfo , каждый источник данных должен быть один столбец.Я пробовал ниже, но это не дает правильную ошибку идентификатора

выберите планы. * Из cth01.tablename pl, XMLTABLE (XMLNAMESPACES ('http: // ...' как "ns3", 'http: / ... 'как "ns4"),' / CTHClob / ns3: OtherData / ns4: участник / ns4: планы 'PASSING
xmltype (pl.rqst_info) COLUMNSNumber varchar2 (20) путь' ns4: Number ', Pin varchar2 (20) путь 'ns4: Pin') планы, где pl.prty_rqst_id = '';

XML выглядит следующим образом

 <?xml version="1.0"?><CTHClobType xmlns:ns2="http://... xmlns:ns4....>
        --namespaces removed
            <ns3:OtherData>
                <ns4:Participant>
                    <ns4:Name>ALEXA MAKAILA JAVAVILLAGE</ns4:Name>
                    <ns4:PIN>4159505</ns4:PIN>
                    <ns4:PlanBalance>3497.15</ns4:PlanBalance>
                    <ns4:ForcedDistributionAmount>3497.15</ns4:ForcedDistributionAmount>
                    <ns4:ParticipantListType>Critical</ns4:ParticipantListType>
                    <ns4:Plans>
                        <ns4:Plan>
                            <ns4:Number>100178</ns4:Number>
                            <ns4:Name>CHILDRENS HOSPITAL OF PHIL. RETIREMENT SAVINGS PLAN - CSA</ns4:Name>
                            <ns4:Balance>3497.15</ns4:Balance>
                            <ns4:VestingInfo>
                                <ns4:DelayedVestingLite>false</ns4:DelayedVestingLite>
                                <ns4:DelayedVestingFull>true</ns4:DelayedVestingFull>
                                <ns4:VestingSourcesOnSingleSchedule>false</ns4:VestingSourcesOnSingleSchedule>
    --The above 3 should be repeted for each source
                                <ns4:Sources>
                                    <ns4:Source>
                                        <ns4:SourceID>T</ns4:SourceID>
                                        <ns4:SourceName>EMPLOYER MATCH</ns4:SourceName>
                                        <ns4:VestedPercentage>50</ns4:VestedPercentage>
                                        <ns4:VestedAmount>5647.94</ns4:VestedAmount>
                                        <ns4:UnAdjustedVestedPercent>50</ns4:UnAdjustedVestedPercent>
                                        <ns4:TIAAContractNumber>330292F5</ns4:TIAAContractNumber>
                                        <ns4:CREFContractNumber>430292F3</ns4:CREFContractNumber>
                                        <ns4:ContractName>GRA</ns4:ContractName>
                                    </ns4:Source>
                                    <ns4:Source>
                                        ...
                                    </ns4:Source>
                                </ns4:Sources>
                            </ns4:VestingInfo>

Выше xml является частичным, как полностьюэто большой, поэтому удалены несвязанные теги.

Полученные элементы должны быть такими, как показано ниже

ReslutingColumns

1 Ответ

0 голосов
/ 07 мая 2019

Нашел решение.Ниже прекрасно работает для запроса, как указано выше

SELECT prty_rqst_id,  vstng_src_on_sngl_sch, OMNI_PLN_NBR, sources.* 
               FROM   cth01.rqst_payload pl, 
                            XMLTABLE(xmlnamespaces (<namespaces>), 
                            '//pathToXMLTagToBeExtracted/.../' 
                            passing  xmltype(pl.rqst_info) 
                            COLUMNS 
                            OMNI_PLN_NBR VARCHAR2(6)  path 'ns4:Number'), 
                            XMLTABLE(xmlnamespaces (<namespaces>),
                            '//pathToXMLTagToBeExtracted/...//ns4:VestingInfo' 
                            passing xmltype(pl.rqst_info) 
                            COLUMNS 
                            vstng_src_on_sngl_sch VARCHAR2(50) path 'ns4:VestingSourcesOnSingleSchedule'), 
                            XMLTABLE(xmlnamespaces (<namespaces>) , 
                            '//pathToXMLTagToBeExtracted/...//ns4:VestingInfo/ns4:Sources/ns4:Source'
                            passing xmltype(pl.rqst_info) 
                            COLUMNS 
                            src_id VARCHAR2(20) path 'ns4:SourceID', 
                            src_nm VARCHAR2(50) path 'ns4:SourceName',
                            SUB_PLN_NBR VARCHAR2(16) path 'ns4:SubplanNumber',
                            vstd_pct NUMBER(20, 2) path 'ns4:VestedPercentage', 
                            vstd_amt NUMBER(20, 2) path 'ns4:VestedAmount', 
                            UPD_UNADJ_VSTD_PCT  NUMBER(15,2) path 'ns4:UpdatedUnAdjustedVestedPercent',
                            unadj_vstd_pct NUMBER(20, 2) path 'ns4:UnAdjustedVestedPercent', 
                            tiaa_cntrct_nbr VARCHAR2(50) path 'ns4:TIAAContractNumber', 
                            cref_cntrct_nbr VARCHAR2(50) path 'ns4:CREFContractNumber', 
                            cntrct_nm VARCHAR2(50) path 'ns4:ContractName' ) sources 
                WHERE  pl.prty_rqst_id = '123') 
...