Convert XML Data into Column Data


1) Simple XML Data

create table x1 (a1 number , xml_col xmltype)
xmltype xml_col store as clob

insert into x1  values (1,'<?xml version="1.0"?>
 <catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer-s Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML. </description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world. </description>
   </book>
</catalog>')

commit



select a1,xml_books.*
from x1 sc,
xmltable(
'$doc/catalog/book' 
passing sc.xml_col as "doc"
columns 
book_id      varchar(10)  path '@id',
author       varchar(64)  path 'author',
title        varchar(128) path 'title',
genre        varchar(12)  path 'genre',
price        decimal(7,2) path 'price',
publish_date date         path 'publish_date',
description  varchar(128) path 'description',
book_sequence_no for ordinality

) as xml_books


2) Complex XML Data

create table xxdm_ar_sample_xml_t (id number,XML_TAGS xmltype)
xmltype XML_TAGS STORE AS CLOB

insert into xxdm_ar_sample_xml_t values (1,'<ns2:financialMessages xmlns:ns2="http://healthinsurance.oracle.com/financial/v1">
       <financialMessage xmlns="http://healthinsurance.oracle.com/financial/v1" id="10113" jobId="39301172" messageDate="2018-08-16T13:35:38.972+04:00">
        <messageBulkingCriteria financialMessageBulkingGroup="JK0916012"/>
        <accountingDetails>
            <accountingDetail ohiAccountingDetailId="13654" currencyCode="AED" amountDebit="0" amountCredit="0" description="OHI Enrollment Administration">
                <accountingDetailBulkingCriteria accountingDetailBulkingGroup="" distributionAccount="AUH-MAFRAQ -DRCT-KCO-Individual-THQ" reversal="N"/>
            </accountingDetail>
            <accountingDetail ohiAccountingDetailId="13655" currencyCode="AED" amountDebit="0" amountCredit="0" description="OHI Enrollment Administration">
                <accountingDetailBulkingCriteria accountingDetailBulkingGroup="" distributionAccount="AUH-MAFRAQ -DRCT-KCO-Individual-THQ" reversal="Y"/>
            </accountingDetail>
        </accountingDetails>
        <invoices>
            <invoice ohiInvoiceId="13653" documentId="13653" organization="OU1" invoiceType="THIQA INVOICE" invoiceDate="2018-08-16" currencyCode="AED" invoiceAmount="210.58" paymentTerms="30_MONTHLY_DOF" description="OHI Policy Invoice" source="OHI IMPORTED BILLS" attribute2="JK0916012" attribute3="person-12" attribute4="AUH" attribute5="Thiqa AD Branch" attribute9="2019-03-15" attribute10="Department of Finance" attribute12="TH2">
                <invoiceBulkingCriteria invoiceBulkingGroup="JK0916012TH215032019" counterpartyCode="MR-008" invoiceDestination="R"/>
                <invoiceLines>
                    <invoiceLine ohiLineId="13651" lineNumber="1003" lineType="ITEM" amount="200.55" distributionAccount="AUH-MAFRAQ -DRCT-KCO-Individual-THQ" attribute4="2019-03-15" attribute5="2020-03-14">
                        <invoiceLineBulkingCriteria invoiceLineBulkingGroup="TH_ADMIN_FEE"/>
                    </invoiceLine>
                    <invoiceLine ohiLineId="13652" lineNumber="1004" lineType="TAX" amount="10.03" distributionAccount="AUH-MAFRAQ -DRCT-KCO-Individual-THQ" attribute1="1003" attribute2="STANDARD_VAT" attribute3="STANDARD_VAT" attribute4="2019-03-15" attribute5="2020-03-14">
                        <invoiceLineBulkingCriteria invoiceLineBulkingGroup="TH_ADMIN_FEE_VAT"/>
                    </invoiceLine>
                </invoiceLines>
                <accountingDetails>
                    <accountingDetail ohiAccountingDetailId="13647" currencyCode="AED" amountDebit="0" amountCredit="210.58" description="OHI Enrollment Administration">
                        <accountingDetailBulkingCriteria accountingDetailBulkingGroup="" distributionAccount="AUH-MAFRAQ -DRCT-KCO-Individual-THQ" reversal="N"/>
                    </accountingDetail>
                </accountingDetails>
            </invoice>
        </invoices>
    </financialMessage>
    </ns2:financialMessages>');

SELECT      invoice.ohiInvoiceId,
            invoice.documentId,
            invoice.organization,
            invoice.invoiceType,
            invoice.invoiceDate,
            invoice.currencyCode,
            invoice.invoiceAmount,
            invoice.paymentTerms
            ,invoice.description,
            invoice.source,
            invoice.inv_attribute1,
            invoice.inv_attribute2,
            invoice.inv_attribute3,
            invoice.inv_attribute4,
            invoice.inv_attribute5,
            invoice.inv_attribute6,
            invoice.inv_attribute7,
            invoice.inv_attribute8,
            invoice.inv_attribute9,
            invoice.inv_attribute10,
            invoice.inv_attribute12,
            invoice.inv_attribute13,
            invoice.inv_attribute14,
            invoice.inv_attribute15,
            invoiceBulkingCriteria.invoiceBulkingGroup,
            invoiceBulkingCriteria.counterpartyCode,
            invoiceBulkingCriteria.invoiceDestination,
            invoice_line.ohiLineId,
            invoice_line.lineNumber,
            invoice_line.lineType,
            invoice_line.amount ,
            invoice_line.distributionAccount ,
            invoice_line.line_attribute2 ,
            invoice_line.line_attribute3 ,
            invoice_line.line_attribute4 ,
            invoice_line.line_attribute5,
            invoice_line.line_attribute6,
            invoice_line.line_attribute7 ,
            invoice_line.line_attribute8 ,
            invoice_line.line_attribute9 ,
            invoice_line.line_attribute10 ,
            invoice_line.line_attribute12 ,
            invoice_line.line_attribute13,
            invoice_line.line_attribute14 ,
            invoice_line.line_attribute15                                                    
FROM xxdm_financialmsg_data x,                                                                   
XMLTable(XMLNAMESPACES('http://healthinsurance.oracle.com/financial/v1/' AS "b"
,default'http://healthinsurance.oracle.com/financial/v1'),'financialMessages/financialMessage/invoices/invoice'
PASSINGXMLTYPE.createXML(x.FIN_DATA)                                      
COLUMNS ohiInvoiceId    PATH'@ohiInvoiceId',                    
        documentId      PATH '@documentId' ,
        organization    PATH '@organization',
        invoiceType     PATH '@invoiceType',
        invoiceDate     PATH '@invoiceDate',
        currencyCode    PATH '@currencyCode',
        invoiceAmount   PATH '@invoiceAmount',
        paymentTerms    PATH '@paymentTerms',
        description     PATH '@description',
        source          PATH '@source',
        inv_attribute1  PATH '@attribute1',
        inv_attribute2  PATH '@attribute2',
        inv_attribute3  PATH '@attribute3',
        inv_attribute4  PATH '@attribute4',
        inv_attribute5  PATH '@attribute5',
        inv_attribute6  PATH '@attribute6',
        inv_attribute7  PATH '@attribute7',
        inv_attribute8  PATH '@attribute8',
        inv_attribute9  PATH '@attribute9',
        inv_attribute10 PATH '@attribute10',
        inv_attribute12 PATH '@attribute12',
        inv_attribute13 PATH '@attribute13',
        inv_attribute14 PATH '@attribute14',
        inv_attribute15 PATH '@attribute15',
invoiceBulkingCriteria XMLTYPE PATH 'invoiceBulkingCriteria',
invoice_line  XMLTYPE PATH 'invoiceLines/invoiceLine' )invoice ,
XMLTable(XMLNAMESPACES('http://healthinsurance.oracle.com/financial/v1/' AS "b"
,default'http://healthinsurance.oracle.com/financial/v1'),'invoiceBulkingCriteria'
PASSING invoice.invoiceBulkingCriteria
COLUMNS invoiceBulkingGroup PATH'@invoiceBulkingGroup',                     
        counterpartyCode    PATH '@counterpartyCode',
        invoiceDestination  PATH '@invoiceDestination'  )invoiceBulkingCriteria        ,
XMLTable(XMLNAMESPACES('http://healthinsurance.oracle.com/financial/v1/' AS "b"
,default'http://healthinsurance.oracle.com/financial/v1'),'invoiceLine'
PASSING invoice.invoice_line
COLUMNS     ohiLineId           PATH'@ohiLineId',                    
            lineNumber          PATH '@lineNumber',
            lineType            PATH '@lineType',
            amount              PATH '@amount',
            distributionAccount PATH '@distributionAccount',
            inv_attribute1      PATH '@attribute1',
            line_attribute2     PATH '@attribute2',
            line_attribute3     PATH '@attribute3',
            line_attribute4     PATH '@attribute4',
            line_attribute5     PATH '@attribute5',
            line_attribute6     PATH '@attribute6',
            line_attribute7     PATH '@attribute7',
            line_attribute8     PATH '@attribute8',
            line_attribute9     PATH '@attribute9',
            line_attribute10    PATH '@attribute10',
            line_attribute12    PATH '@attribute12',
            line_attribute13    PATH '@attribute13',
            line_attribute14    PATH '@attribute14',
            line_attribute15    PATH '@attribute15')invoice_line 
where x.id=1