Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Extracting XML data

Srinadh SriSep 13 2016 — edited Sep 30 2016

Hi,

I have written bellow query to extract xml data. In XML  i have 16000 rows and i need to compare these rows with existing data in xxtl_employee_master_t table then i will update employee master table with latest data which is extracted by using bellow query but the bellow query is taking too much time. Can anyone please suggest some tips to improve performance.

SELECT xd.*

    FROM

      (SELECT ExtractValue(VALUE(t),'/G_EMP/A1') BU_ID,

        ExtractValue(VALUE(t),'/G_EMP/A2') EMPLOYEE_ID,

        ExtractValue(VALUE(t),'/G_EMP/A3') EMPLOYEE_TYPE,

        ExtractValue(VALUE(t),'/G_EMP/A4') EMPLOYEE_NUMBER,

        ExtractValue(VALUE(t),'/G_EMP/A5') EMPLOYEE_NAME,

        ExtractValue(VALUE(t),'/G_EMP/A6') USERNAME,

        ExtractValue(VALUE(t),'/G_EMP/A7') USER_ID,

        ExtractValue(VALUE(t),'/G_EMP/A8') JOB_ID,

        ExtractValue(VALUE(t),'/G_EMP/A9') HOURLY_RATE,

        TO_TIMESTAMP_TZ(ExtractValue(VALUE(t),'/G_EMP/A10'),'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') START_DATE,

        TO_TIMESTAMP_TZ(ExtractValue(VALUE(t),'/G_EMP/A11'),'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') END_DATE,

        ExtractValue(VALUE(t),'/G_EMP/A12') STATUS,

        ExtractValue(VALUE(t),'/G_EMP/A13') START_DAY,

        ExtractValue(VALUE(t),'/G_EMP/A14') END_DAY,

        ExtractValue(VALUE(t),'/G_EMP/A15') START_TIME,

        ExtractValue(VALUE(t),'/G_EMP/A16') END_TIME,

        ExtractValue(VALUE(t),'/G_EMP/A17') PAYROLL_ID,

        ExtractValue(VALUE(t),'/G_EMP/A18') OT_ELIGIBILITY,

        ExtractValue(VALUE(t),'/G_EMP/A19') ASSIGNMENT_ID,

        ExtractValue(VALUE(t),'/G_EMP/A20') ASSIGNMENT_NUMBER,

        ExtractValue(VALUE(t),'/G_EMP/A21') DIVISION_CODE,

        ExtractValue(VALUE(t),'/G_EMP/A22') DEPARTMENT_ID,

        ExtractValue(VALUE(t),'/G_EMP/A23') EMP_NO,

       ExtractValue(VALUE(t),'/G_EMP/A24') WORK_TERMS_NUMBER

      FROM TABLE(xmlsequence(EXTRACT(xmltype(

        (SELECT NVL(table_clob_data,'<DUMMY></DUMMY>')

        FROM xxtl_clob_data_t

        WHERE table_name='Employee Master'

        )), '/DATA_DS/G_EMP')) ) t

      )xd

    WHERE EXISTS

      (SELECT 1

      FROM xxtl_employee_master_t xemt

      WHERE xemt.employee_id=xd.employee_id

      AND xemt.bu_id        =xd.bu_id

      AND xemt.employee_type=xd.employee_type

      );

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

PL/SQL Release 11.2.0.3.0 - Production

"CORE 11.2.0.3.0 Production"

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

Thanks,

Srinadh.

This post has been answered by odie_63 on Sep 13 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 11 2016
Added on Sep 13 2016
3 comments
206 views