2017-06-02 56 views
0

我是XMl和Oracle SQL中的新成员。我们有一个具有列的Oracle表,其中一个列是具有Xml数据的CLOB。现在我们必须将包含clob的所有列加载到第二个表中。现在的问题是,当我们解开clob时,如果我们有超过100条记录,则需要很长时间。下面的例子展示了在解压clob时select语句是如何工作的。如果我们删除满足20天的日期文件夹,以下内容会花费很多时间。有没有一种方法可以提高select语句的性能,或者可以使用ODI 12c来实现?我希望我的见解清楚。如何提取具有许多节点的xml clob列

SELECT REG_FORM_ID, 
     FORM_TYPE_CD, 
     BO_STATUS_CD, 
     ACCT_ID, 
     PER_ID, 
     STATUS_UPD_DTTM, 
    L2_CI_REG_FORM_REGISTRATION."etpmTIN" etpmTIN, 
    L2_CI_REG_FORM_REGISTRATION."regType" regType, 
    L2_CI_REG_FORM_REGISTRATION."effectiveDate" effectiveDate, 
    L2_CI_REG_FORM_REGISTRATION."legacyTIN" legacyTIN, 

    L2_CI_REG_FORM_REGISTRATION."businessType" businessType, 
    L2_CI_REG_FORM_REGISTRATION."otherBusinessType" otherBusinessType, 
    L2_CI_REG_FORM_REGISTRATION."companyRegNumber" companyRegNumber, 
    L2_CI_REG_FORM_REGISTRATION."detailforname" detailforname, 
    L2_CI_REG_FORM_REGISTRATION."detailmaidenName" detailmaidenName, 
    L2_CI_REG_FORM_REGISTRATION."detailname" detailname, 
    L2_CI_REG_FORM_REGISTRATION."detailsurname" detailsurname, 
    L2_CI_REG_FORM_REGISTRATION."detailtitle" detailtitle, 

    L2_CI_REG_FORM_REGISTRATION."contemailAddress" contemailAddress, 
    L2_CI_REG_FORM_REGISTRATION."contphoneDetails" contphoneDetails, 
    L2_CI_REG_FORM_REGISTRATION."contphyAddress1" contphyAddress1, 
    L2_CI_REG_FORM_REGISTRATION."contphyAddress2" contphyAddress2, 
    L2_CI_REG_FORM_REGISTRATION."contphyAddress3" contphyAddress3, 
    L2_CI_REG_FORM_REGISTRATION."contphyAddress4" contphyAddress4, 
    L2_CI_REG_FORM_REGISTRATION."contphyCity" contphyCity, 
    L2_CI_REG_FORM_REGISTRATION."contphyCountry" contphyCountry, 
    L2_CI_REG_FORM_REGISTRATION."contphyCounty" contphyCounty, 
    L2_CI_REG_FORM_REGISTRATION."contphyPostal" contphyPostal, 
    L2_CI_REG_FORM_REGISTRATION."contpostAddress1" contpostAddress1, 
    L2_CI_REG_FORM_REGISTRATION."contpostAddress2" contpostAddress2, 
    L2_CI_REG_FORM_REGISTRATION."contpostAddress3" contpostAddress3, 
    L2_CI_REG_FORM_REGISTRATION."contpostAddress4" contpostAddress4, 
    L2_CI_REG_FORM_REGISTRATION."contpostCity" contpostCity, 
    L2_CI_REG_FORM_REGISTRATION."contpostCountry" contpostCountry, 
    L2_CI_REG_FORM_REGISTRATION."contpostCounty" contpostCounty, 
    L2_CI_REG_FORM_REGISTRATION."contpostNum" contpostNum, 
    L2_CI_REG_FORM_REGISTRATION."contpostPostal" contpostPostal, 
    L2_CI_REG_FORM_REGISTRATION."contpostType" contpostType, 


    L2_CI_REG_FORM_REGISTRATION."accountantName" accountantName, 
    L2_CI_REG_FORM_REGISTRATION."accountantPerID" accountantPerID, 
    L2_CI_REG_FORM_REGISTRATION."accountantphoneDetails" accountantphoneDetails, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyAddress1" accountantphyAddress1, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyAddress2" accountantphyAddress2, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyAddress3" accountantphyAddress3, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyAddress4" accountantphyAddress4, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyCity" accountantphyCity, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyCountry" accountantphyCountry, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyCounty" accountantphyCounty, 
    L2_CI_REG_FORM_REGISTRATION."accountantphyPostal" accountantphyPostal, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostAddress1" accountantpostAddress1, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostAddress2" accountantpostAddress2, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostAddress3" accountantpostAddress3, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostAddress4" accountantpostAddress4, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostCity" accountantpostCity, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostCountry" accountantpostCountry, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostCounty" accountantpostCounty, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostNum" accountantpostNum, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostPostal" accountantpostPostal, 
    L2_CI_REG_FORM_REGISTRATION."accountantpostType" accountantpostType, 
    L2_CI_REG_FORM_REGISTRATION."accountantTIN" accountantTIN, 

    L2_CI_REG_FORM_REGISTRATION."officeremailAddress" officeremailAddress, 
    L2_CI_REG_FORM_REGISTRATION."officerName" officerName, 
    L2_CI_REG_FORM_REGISTRATION."officerPerID" officerPerID, 
    L2_CI_REG_FORM_REGISTRATION."officerphoneDetails" officerphoneDetails, 
    L2_CI_REG_FORM_REGISTRATION."officerphyAddress1" officerphyAddress1, 
    L2_CI_REG_FORM_REGISTRATION."officerphyAddress2" officerphyAddress2, 
    L2_CI_REG_FORM_REGISTRATION."officerphyAddress3" officerphyAddress3, 
    L2_CI_REG_FORM_REGISTRATION."officerphyAddress4" officerphyAddress4, 
    L2_CI_REG_FORM_REGISTRATION."officerphyCity" officerphyCity, 
    L2_CI_REG_FORM_REGISTRATION."officerphyCountry" officerphyCountry, 
    L2_CI_REG_FORM_REGISTRATION."officerphyCounty" officerphyCounty, 
    L2_CI_REG_FORM_REGISTRATION."officerphyPostal" officerphyPostal, 
    L2_CI_REG_FORM_REGISTRATION."officerpostAddress1" officerpostAddress1, 
    L2_CI_REG_FORM_REGISTRATION."officerpostAddress2" officerpostAddress2, 
    L2_CI_REG_FORM_REGISTRATION."officerpostAddress3" officerpostAddress3, 
    L2_CI_REG_FORM_REGISTRATION."officerpostAddress4" officerpostAddress4, 
    L2_CI_REG_FORM_REGISTRATION."officerpostCity" officerpostCity, 
    L2_CI_REG_FORM_REGISTRATION."officerpostCountry" officerpostCountry, 
    L2_CI_REG_FORM_REGISTRATION."officerpostCounty" officerpostCounty, 
    L2_CI_REG_FORM_REGISTRATION."officerpostNum" officerpostNum, 
    L2_CI_REG_FORM_REGISTRATION."officerpostPostal" officerpostPostal, 
    L2_CI_REG_FORM_REGISTRATION."officerpostType" officerpostType, 
    L2_CI_REG_FORM_REGISTRATION."officerTIN" officerTIN, 

    L2_CI_REG_FORM_REGISTRATION."vatEffectiveDate" vatEffectiveDate, 
    L2_CI_REG_FORM_REGISTRATION."vatReason"  vatReason, 
    L2_CI_REG_FORM_REGISTRATION."vatNewOrAcquired" vatNewOrAcquired, 
    L2_CI_REG_FORM_REGISTRATION."vatNumber"  vatNumber, 

    L2_CI_REG_FORM_REGISTRATION."payeEffectiveDate" payeEffectiveDate, 
    L2_CI_REG_FORM_REGISTRATION."employeeNumber" employeeNumber, 
    L2_CI_REG_FORM_REGISTRATION."minSalary" minSalary, 
    L2_CI_REG_FORM_REGISTRATION."maxSalary" maxSalary, 



    L2_CI_REG_FORM_REGISTRATION."nonResSvcProvider" nonResSvcProvider, 
    L2_CI_REG_FORM_REGISTRATION."nonResServProdDesc" nonResServProdDesc, 
    L2_CI_REG_FORM_REGISTRATION."resContractors" resContractors, 
    L2_CI_REG_FORM_REGISTRATION."resContractorsDesc" resContractorsDesc, 


    L2_CI_REG_FORM_REGISTRATION."vatTaxRoleId" vatTaxRoleId, 
    L2_CI_REG_FORM_REGISTRATION."soleTaxRoleId" soleTaxRoleId, 
    L2_CI_REG_FORM_REGISTRATION."corpTaxRoleId" corpTaxRoleId, 
    L2_CI_REG_FORM_REGISTRATION."payeTaxRoleId" payeTaxRoleId, 
    L2_CI_REG_FORM_REGISTRATION."whtTaxRoleId" whtTaxRoleId, 
    L2_CI_REG_FORM_REGISTRATION."approverUserId" approverUserId, 
    L2_CI_REG_FORM_REGISTRATION."fbtTaxRoleId" fbtTaxRoleId, 



    L2_CI_REG_FORM_REGISTRATION."correspondenceemailAddress" correspondenceemailAddress, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephoneDetails" correspondencephoneDetails, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyAddress1" correspondencephyAddress1, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyAddress2" correspondencephyAddress2, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyAddress3" correspondencephyAddress3, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyAddress4" correspondencephyAddress4, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyCity" correspondencephyCity, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyCountry" correspondencephyCountry, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyCounty" correspondencephyCounty, 
    L2_CI_REG_FORM_REGISTRATION."correspondencephyPostal" correspondencephyPostal, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostAddress1" correspondencepostAddress1, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostAddress2" correspondencepostAddress2, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostAddress3" correspondencepostAddress3, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostAddress4" correspondencepostAddress4, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostCity" correspondencepostCity, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostCountry" correspondencepostCountry, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostCounty" correspondencepostCounty, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostNum" correspondencepostNum, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostPostal" correspondencepostPostal, 
    L2_CI_REG_FORM_REGISTRATION."correspondencepostType" correspondencepostType, 

    L2_CI_REG_FORM_REGISTRATION."soleidrescountryOfBirth" soleidrescountryOfBirth, 
    L2_CI_REG_FORM_REGISTRATION."soleidrescountryOfCit" soleidrescountryOfCit, 
    L2_CI_REG_FORM_REGISTRATION."soleidrescountryOfIssue" soleidrescountryOfIssue, 
    L2_CI_REG_FORM_REGISTRATION."soleidrescountryOfRes" soleidrescountryOfRes, 
    L2_CI_REG_FORM_REGISTRATION."soleidresdateOfBirth" soleidresdateOfBirth, 
    L2_CI_REG_FORM_REGISTRATION."soleidresotherCountryOfIssue" soleidresotherCountryOfIssue, 
    L2_CI_REG_FORM_REGISTRATION."soleidresotherID" soleidresotherID, 
    L2_CI_REG_FORM_REGISTRATION."soleidresotherIDNumber" soleidresotherIDNumber, 
    L2_CI_REG_FORM_REGISTRATION."soleidrespassportExpiryDate" soleidrespassportExpiryDate, 
    L2_CI_REG_FORM_REGISTRATION."soleidrespassportNum" soleidrespassportNum, 

    L2_CI_REG_FORM_REGISTRATION."condMarriage" condMarriage, 
    L2_CI_REG_FORM_REGISTRATION."employer" employer, 
    L2_CI_REG_FORM_REGISTRATION."maritalStatus" maritalStatus, 
    L2_CI_REG_FORM_REGISTRATION."spouseMaiden" spouseMaiden, 
    L2_CI_REG_FORM_REGISTRATION."spouseName" spouseName, 
    L2_CI_REG_FORM_REGISTRATION."spousePerID" spousePerID, 
    L2_CI_REG_FORM_REGISTRATION."spouseTIN" spouseTIN, 



    L2_CI_REG_FORM_REGISTRATION."vatPreviousName" vatPreviousName, 
    L2_CI_REG_FORM_REGISTRATION."vatPreviousTIN" vatPreviousTIN, 
    L2_CI_REG_FORM_REGISTRATION."vatPerID" vatPerID, 
    L2_CI_REG_FORM_REGISTRATION."vatPreviousAddress" vatPreviousAddress, 

     L2_CI_REG_FORM_FBT."fbtType" fbtType, 

    L2_CI_REG_FORM_WITHB."whtType" whtType, 
    L2_CI_REG_FORM_WITHB."whtOther" whtOther , 

    L2_CI_REG_FORM_DIRECTOR."directorName" directorName, 
    L2_CI_REG_FORM_DIRECTOR."directorPerID" directorPerID, 
    L2_CI_REG_FORM_DIRECTOR."directorTIN" directorTIN, 

    L2_CI_REG_FORM_TRADENAME."tradeName" tradeName, 
    L2_CI_REG_FORM_TRADENAME."commencementDate" commencementDate, 
     L2_CI_REG_FORM_TRADENAME."natureOfBusiness" natureOfBusiness, 
    L2_CI_REG_FORM_TRADENAME."traderNumber" traderNumber, 


     LOAD_DATE LAST_UPDATE_DATE, 
     'I' IND_UPDATE 


    FROM L1_CI_REG_FORM, 

    XMLTABLE('REGISTRATION' 
     PASSING xmltype(L1_CI_REG_FORM.BO_DATA_AREA) 
     COLUMNS 

     "etpmTIN" varchar2(16) PATH 'rsnForReg/etpmTIN/asCurrent', 
     "regType" varchar2(6) PATH 'rsnForReg/regType/asCurrent', 
     "effectiveDate" DATE PATH 'rsnForReg/effectiveDate/asCurrent', 
     "legacyTIN" VARCHAR2(16) PATH 'rsnForReg/legacyTIN/asCurrent', 
     "businessType" varchar2(100) PATH 'detailsSection/businessType/asCurrent', 
     "otherBusinessType" varchar2(100) PATH 'detailsSection/otherBusinessType/asCurrent', 
     "detailname" VARCHAR2(100) PATH 'detailsSection/name/asCurrent', 
     "companyRegNumber" VARCHAR2(100) PATH 'detailsSection/companyRegNumber/asCurrent', 
     "detailtitle" VARCHAR2(16) PATH 'detailsSection/title/asCurrent', 
     "detailsurname" VARCHAR2(100) PATH 'detailsSection/surname/asCurrent', 
     "detailforname" VARCHAR2(100) PATH 'detailsSection/forname/asCurrent', 
     "detailmaidenName" VARCHAR2(100) PATH 'detailsSection/maidenName/asCurrent', 
    "contemailAddress" VARCHAR2(100) PATH 'contactSection/emailAddress/asCurrent', 
    "contphoneDetails" VARCHAR2(100) PATH 'contactSection/phoneDetails/asCurrent', 
    "contphyAddress1" VARCHAR2(100) PATH 'contactSection/phyAddress1/asCurrent', 
    "contphyAddress2" VARCHAR2(100) PATH 'contactSection/phyAddress2/asCurrent', 
    "contphyAddress3" VARCHAR2(100) PATH 'contactSection/phyAddress3/asCurrent', 
    "contphyAddress4" VARCHAR2(100) PATH 'contactSection/phyAddress4/asCurrent', 
    "contphyCity" varchar2(100) PATH 'contactSection/phyCity/asCurrent', 
    "contphyCountry" varchar2(3) PATH 'contactSection/phyCountry/asCurrent', 
    "contphyCounty" varchar2(100) PATH 'contactSection/phyCounty/asCurrent', 
    "contphyPostal" VARCHAR2(100) PATH 'contactSection/phyPostal/asCurrent', 
    "contpostAddress1" VARCHAR2(100) PATH 'contactSection/postAddress1/asCurrent', 
    "contpostAddress2" VARCHAR2(100) PATH 'contactSection/postAddress2/asCurrent', 
    "contpostAddress3" VARCHAR2(100) PATH 'contactSection/postAddress3/asCurrent', 
    "contpostAddress4" VARCHAR2(100) PATH 'contactSection/postAddress4/asCurrent', 
     "contpostCity" varchar2(100) PATH 'contactSection/postCity/asCurrent', 
     "contpostCountry" varchar2(3) PATH 'contactSection/postCountry/asCurrent', 
    "contpostCounty" varchar2(100) PATH 'contactSection/postCounty/asCurrent', 
    "contpostNum" VARCHAR2(100) PATH 'contactSection/postNum/asCurrent', 
    "contpostPostal" VARCHAR2(100) PATH 'contactSection/postPostal/asCurrent', 
    "contpostType" varchar2(6) PATH 'contactSection/postType/asCurrent', 
     "accountantName" varchar2(100) PATH 'accountantSection/name/asCurrent', 
    "accountantPerID" varchar2(100) PATH 'accountantSection/PerID/asCurrent', 
    "accountantphoneDetails" VARCHAR2(100) PATH 'accountantSection/phoneDetails/asCurrent', 
    "accountantphyAddress1" VARCHAR2(100) PATH 'accountantSection/phyAddress1/asCurrent', 
    "accountantphyAddress2" VARCHAR2(100) PATH 'accountantSection/phyAddress2/asCurrent', 
    "accountantphyAddress3" VARCHAR2(100) PATH 'accountantSection/phyAddress3/asCurrent', 
    "accountantphyAddress4" VARCHAR2(100) PATH 'accountantSection/phyAddress4/asCurrent', 
    "accountantphyCity" VARCHAR2(100) PATH 'accountantSection/phyCity/asCurrent', 
    "accountantphyCountry" VARCHAR2(100) PATH 'accountantSection/phyCountry/asCurrent', 
    "accountantphyCounty" VARCHAR2(100) PATH 'accountantSection/phyCounty/asCurrent', 
    "accountantphyPostal" VARCHAR2(100) PATH 'accountantSection/phyPostal/asCurrent', 
    "accountantpostAddress1" VARCHAR2(100) PATH 'accountantSection/postAddress1/asCurrent', 
    "accountantpostAddress2" VARCHAR2(100) PATH 'accountantSection/postAddress2/asCurrent', 
    "accountantpostAddress3" VARCHAR2(100) PATH 'accountantSection/postAddress3/asCurrent', 
    "accountantpostAddress4" VARCHAR2(100) PATH 'accountantSection/postAddress4/asCurrent', 
    "accountantpostCity" VARCHAR2(100) PATH 'accountantSection/postCity/asCurrent', 
    "accountantpostCountry" VARCHAR2(100) PATH 'accountantSection/postCountry/asCurrent', 
    "accountantpostCounty" VARCHAR2(100) PATH 'accountantSection/postCounty/asCurrent', 
    "accountantpostNum" VARCHAR2(100) PATH 'accountantSection/postNum/asCurrent', 
    "accountantpostPostal" VARCHAR2(100) PATH 'accountantSection/postPostal/asCurrent', 
    "accountantpostType" VARCHAR2(100) PATH 'accountantSection/postType/asCurrent', 
    "accountantTIN" VARCHAR2(100) PATH 'accountantSection/TIN/asCurrent', 
    "officeremailAddress" VARCHAR2(100) PATH 'officerSection/emailAddress/asCurrent', 
    "officerName" varchar2(100) PATH 'officerSection/name/asCurrent', 
    "officerPerID" varchar2(16) PATH 'officerSection/PerID/asCurrent', 
    "officerphoneDetails" VARCHAR2(100) PATH 'officerSection/phoneDetails/asCurrent', 
    "officerphyAddress1" VARCHAR2(100) PATH 'officerSection/phyAddress1/asCurrent', 
    "officerphyAddress2" VARCHAR2(100) PATH 'officerSection/phyAddress2/asCurrent', 
    "officerphyAddress3" VARCHAR2(100) PATH 'officerSection/phyAddress3/asCurrent', 
    "officerphyAddress4" VARCHAR2(100) PATH 'officerSection/phyAddress4/asCurrent', 
    "officerphyCity" VARCHAR2(100) PATH 'officerSection/phyCity/asCurrent', 
    "officerphyCountry" VARCHAR2(100) PATH 'officerSection/phyCountry/asCurrent', 
     "officerphyCounty" VARCHAR2(100) PATH 'officerSection/phyCountry/asCurrent', 
    "officerphyPostal" VARCHAR2(100) PATH 'officerSection/phyPostal/asCurrent', 
    "officerpostAddress1" VARCHAR2(100) PATH 'officerSection/postAddress1/asCurrent', 
    "officerpostAddress2" VARCHAR2(100) PATH 'officerSection/postAddress2/asCurrent', 
    "officerpostAddress3" VARCHAR2(100) PATH 'officerSection/postAddress3/asCurrent', 
    "officerpostAddress4" VARCHAR2(100) PATH 'officerSection/postAddress4/asCurrent', 
    "officerpostCity" VARCHAR2(100) PATH 'officerSection/postCity/asCurrent', 
    "officerpostCountry" VARCHAR2(100) PATH 'officerSection/postCountry/asCurrent', 
    "officerpostCounty" VARCHAR2(100) PATH 'officerSection/postCounty/asCurrent', 
    "officerpostNum" VARCHAR2(100) PATH 'officerSection/postNum/asCurrent', 
    "officerpostPostal" VARCHAR2(100) PATH 'officerSection/postPostal/asCurrent', 
    "officerpostType" VARCHAR2(100) PATH 'officerSection/postType/asCurrent', 
    "officerTIN" varchar2(16) PATH 'officerSection/TIN/asCurrent', 
    "vatEffectiveDate" DATE PATH 'vatSection/vatEffectiveDate/asCurrent', 
    "vatReason" varchar2(100) PATH 'vatSection/vatReason/asCurrent', 
    "vatNewOrAcquired" varchar2(16) PATH 'vatSection/vatNewOrAcquired/asCurrent', 
    "vatNumber" varchar2(16) PATH 'vatSection/vatNumber/asCurrent', 
    "payeEffectiveDate" DATE PATH 'payeSection/payeEffectiveDate/asCurrent', 
    "employeeNumber" varchar2(12) PATH 'payeSection/employeeNumber/asCurrent', 
    "minSalary" NUMBER(12,0) PATH 'payeSection/minSalary/asCurrent', 
    "maxSalary" NUMBER(12,0) PATH 'payeSection/maxSalary/asCurrent', 
    "nonResSvcProvider" varchar2(16) PATH 'whtSection/nonResSvcProvider/asCurrent', 
    "nonResServProdDesc" varchar2(100) PATH 'whtSection/nonResServProdDesc/asCurrent', 
    "resContractors" varchar2(16) PATH 'whtSection/resContractors/asCurrent', 
    "resContractorsDesc" varchar2(100) PATH 'whtSection/resContractorsDesc/asCurrent', 
    "vatTaxRoleId" VARCHAR2(16) PATH 'maintenance/vatTaxRoleId/asCurrent', 
    "soleTaxRoleId" varchar2(12) PATH 'maintenance/soleTaxRoleId/asCurrent', 
    "corpTaxRoleId" VARCHAR2(16) PATH 'maintenance/corpTaxRoleId/asCurrent', 
    "payeTaxRoleId" VARCHAR2(16) PATH 'maintenance/payeTaxRoleId/asCurrent', 
    "whtTaxRoleId" VARCHAR2(16) PATH 'maintenance/whtTaxRoleId/asCurrent', 
     "approverUserId" VARCHAR2(100) PATH 'maintenance/approverUserId/asCurrent', 
    "fbtTaxRoleId" VARCHAR2(16) PATH 'maintenance/fbtTaxRoleId/asCurrent', 
    "correspondenceemailAddress" VARCHAR2(100) PATH 'soleCorrespondenceSection/emailAddress/asCurrent', 
    "correspondencephoneDetails" VARCHAR2(100) PATH 'soleCorrespondenceSection/phoneDetails/asCurrent', 
    "correspondencephyAddress1" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyAddress1/asCurrent', 
    "correspondencephyAddress2" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyAddress2/asCurrent', 
    "correspondencephyAddress3" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyAddress3/asCurrent', 
    "correspondencephyAddress4" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyAddress4/asCurrent', 
    "correspondencephyCity" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyCity/asCurrent', 
    "correspondencephyCountry" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyCountry/asCurrent', 
    "correspondencephyCounty" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyCounty/asCurrent', 
    "correspondencephyPostal" VARCHAR2(100) PATH 'soleCorrespondenceSection/phyPostal/asCurrent', 
    "correspondencepostAddress1" VARCHAR2(100) PATH 'soleCorrespondenceSection/postAddress1/asCurrent', 
    "correspondencepostAddress2" VARCHAR2(100) PATH 'soleCorrespondenceSection/postAddress2/asCurrent', 
    "correspondencepostAddress3" VARCHAR2(100) PATH 'soleCorrespondenceSection/postAddress3/asCurrent', 
    "correspondencepostAddress4" VARCHAR2(100) PATH 'soleCorrespondenceSection/postAddress4/asCurrent', 
    "correspondencepostCity" VARCHAR2(100) PATH 'soleCorrespondenceSection/postCity/asCurrent', 
    "correspondencepostCountry" VARCHAR2(100) PATH 'soleCorrespondenceSection/postCountry/asCurrent', 
    "correspondencepostCounty" VARCHAR2(100) PATH 'soleCorrespondenceSection/postCounty/asCurrent', 
    "correspondencepostNum" VARCHAR2(100) PATH 'soleCorrespondenceSection/postNum/asCurrent', 
    "correspondencepostPostal" VARCHAR2(100) PATH 'soleCorrespondenceSection/postPostal/asCurrent', 
    "correspondencepostType" VARCHAR2(100) PATH 'soleCorrespondenceSection/postType/asCurrent', 
    "soleidrescountryOfBirth" VARCHAR2(100) PATH 'soleIdResSection/countryOfBirth/asCurrent', 
    "soleidrescountryOfCit" VARCHAR2(100) PATH 'soleIdResSection/countryOfCit/asCurrent', 
    "soleidrescountryOfIssue" VARCHAR2(100) PATH 'soleIdResSection/countryOfIssue/asCurrent', 
    "soleidrescountryOfRes" VARCHAR2(100) PATH 'soleIdResSection/countryOfRes/asCurrent', 
    "soleidresdateOfBirth" DATE PATH 'soleIdResSection/dateOfBirth/asCurrent', 
    "soleidresotherCountryOfIssue" VARCHAR2(100) PATH 'soleIdResSection/otherCountryOfIssue/asCurrent', 
    "soleidresotherID" VARCHAR2(100) PATH 'soleIdResSection/otherID/asCurrent', 
    "soleidresotherIDNumber" VARCHAR2(100) PATH 'soleIdResSection/otherIDNumber/asCurrent', 
    "soleidrespassportExpiryDate" DATE PATH 'soleIdResSection/passportExpiryDate/asCurrent', 
     "soleidrespassportNum" VARCHAR2(100) PATH 'soleIdResSection/passportNum/asCurrent', 
    "condMarriage" VARCHAR2(100) PATH 'soleMiscSection/condMarriage/asCurrent', 
    "employer" VARCHAR2(100) PATH 'soleMiscSection/employer/asCurrent', 
    "maritalStatus" VARCHAR2(100) PATH 'soleMiscSection/maritalStatus/asCurrent', 
    "spouseMaiden" VARCHAR2(100) PATH 'soleMiscSection/spouseMaiden/asCurrent', 
    "spouseName" VARCHAR2(100) PATH 'soleMiscSection/spouseName/asCurrent', 
    "spousePerID" VARCHAR2(100) PATH 'soleMiscSection/spousePerID/asCurrent', 
    "spouseTIN" VARCHAR2(100) PATH 'soleMiscSection/spouseTIN/asCurrent', 
     "vatPreviousName" VARCHAR2(100) PATH 'vatPreviousSection/vatPreviousName/asCurrent', 
    "vatPreviousTIN" VARCHAR2(100) PATH 'vatPreviousSection/vatPreviousTIN/asCurrent', 
    "vatPerID" VARCHAR2(100) PATH 'vatPreviousSection/vatPerID/asCurrent', 
    "vatPreviousAddress" VARCHAR2(100) PATH 'vatPreviousSection/vatPreviousAddress/asCurrent') 


    L2_CI_REG_FORM_REGISTRATION, 





     XMLTable(
     'for $i in REGISTRATION/fbtSection/fbtDetails/fbtDetailsList/fbtType 
     return <row> 
     { 
     $i 
     } 
     </row>' 
     PASSING xmltype(L1_CI_REG_FORM.BO_DATA_AREA) 
     COLUMNS "fbtType" VARCHAR2(100) PATH 'fbtType/asCurrent' 
    ) 

    L2_CI_REG_FORM_FBT, 




     XMLTable(
     'for $i in REGISTRATION/whtSection/whtTypeDetails/whtTypeDetailsList/whtType 
     return <row> 
     { 
     $i, 
     $i/following-sibling::whtOther[1] 
     } 
     </row>' 
     PASSING xmltype(L1_CI_REG_FORM.BO_DATA_AREA) 
     COLUMNS  

     "whtType" varchar2(16) PATH 'whtType/asCurrent', 
     "whtOther" varchar2(100) PATH 'whtOther/asCurrent') 

     L2_CI_REG_FORM_WITHB, 



     XMLTable(
     'for $i in REGISTRATION/directorSection/directorGroup/directorGroupList/directorName 
     return <row> 
     { 
     $i, 
     $i/following-sibling::directorPerID[1], 
     $i/following-sibling::directorTIN[1] 
     } 
     </row>' 
     PASSING xmltype(L1_CI_REG_FORM.BO_DATA_AREA) 
     COLUMNS  

     "directorName" varchar2(16) PATH 'directorName/asCurrent', 
     "directorPerID" varchar2(100) PATH 'directorPerID/asCurrent', 
     "directorTIN" varchar2(100) PATH 'directorTIN/asCurrent') 

    L2_CI_REG_FORM_DIRECTOR, 



     XMLTable(
     'for $i in REGISTRATION/tradenameSection/tradeNameDetails/tradeNameDetailsList/tradeName 
     return <row> 
     { 
     $i, 
     $i/following-sibling::commencementDate[1], 
     $i/following-sibling::natureOfBusiness[1], 
     $i/following-sibling::traderNumber[1] 
     } 
     </row>' 
     PASSING xmltype(L1_CI_REG_FORM.BO_DATA_AREA) 
     COLUMNS  
    "tradeName" VARCHAR2(100) PATH 'tradeName/asCurrent', 
    "commencementDate" DATE PATH 'commencementDate/asCurrent', 
    "natureOfBusiness" VARCHAR2(100) PATH 'natureOfBusiness/asCurrent', 
    "traderNumber" VARCHAR2(100) PATH 'traderNumber/asCurrent') 

    L2_CI_REG_FORM_TRADENAME 


WHERE (1=1) AND TRIM(FORM_TYPE_CD) = 'BUSREGFORM' AND STATUS_UPD_DTTM < '1/SEP/13' 
; 
+0

STATUS_UPD_DTTM列的数据类型是什么?如果是DATE,请不要将它与字符串进行比较 - 请使用DATE 2013-09-01或to_date('01/09/2013','dd/mm /')将字符串显式转换为DATE数据类型。 yyyy')'(使用你最喜欢的格式,记住年份有**四位数字,而不是两个)。至于你的问题,可能是你运气不好; Oracle中的XML操作非常昂贵,并且您已经在使用XMLTABLE方法提取数据。请添加一个示例XML文档,我们可以使用它来运行您的查询。 – Boneist

回答

0

你可以实现你的SELECT语句作为光标与“bulk_collect”的阅读,为了在一个时间只处理行的一小限制数量,而不是一大堆从您的查询结果的同时,寻求更少的资源密集型。

除此之外,采取考虑到,在使用被索引规则出指数(TRIM(FORM_TYPE_CD))列的功能,我不知道如果此列(FORM_TYPE_CD)有一个索引,我只是指出它,所以你确保它不会影响你的过程。

+0

你能分享一个示例文档吗?乍一看,我认为有很多事情会导致问题,甚至是错误的结果。你有没有选择将XML作为XMLTYPE二进制XML存储,而不是首先将CLOB存储 –