Procedure to load XML / Excel data into table

create or replace procedure proc_parseXml(pRawXMLdata clob)  is
   v_parser        Dbms_Xmlparser.Parser;
   v_Xml_Clob      Clob;
   v_Doc           Dbms_Xmldom.Domdocument;

   v_Child_Node    dbms_xmldom.domnodelist;
   v_xml_Node      Dbms_Xmldom.Domnode;


   v_empno         number;
   v_ename         varchar2(20);
   v_job           varchar2(20);
   v_hiredate      varchar2(20);

Begin
      -- CLOB data

  v_Xml_Clob :=pRawXMLdata ;
   -- Create XML Parser.
   v_parser  := Dbms_Xmlparser.Newparser;
   -- Parse XML into DOM object                     
   Dbms_Xmlparser.Parseclob(v_parser , v_Xml_Clob);
   -- XML Document               
   v_Doc := Dbms_Xmlparser.Getdocument(v_parser );
   -- Root element
    v_Child_Node:=dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(v_doc),'/employees/employee');
   --
   For I in 0..dbms_xmldom.getlength(v_Child_Node)-1 LOOP
        v_xml_Node := dbms_xmldom.item(v_Child_Node,I);
       
        DBMS_XSLPROCESSOR.valueof(v_xml_Node,'empno/text()',v_empno);
        DBMS_XSLPROCESSOR.valueof(v_xml_Node,'ename/text()',v_ename);
        DBMS_XSLPROCESSOR.valueof(v_xml_Node,'job/text()',v_job);
        DBMS_XSLPROCESSOR.valueof(v_xml_Node,'hiredate/text()',v_hiredate);
       
        insert into emp(empno, ename, job, hiredate) values(v_empno,v_ename,v_job,v_hiredate);
   End LOOP;   
 

 
End;

/


--Call procedure proc_parseXml


declare
v_rawXMLData clob;
begin
v_rawXMLData :=  '<employees> <employee> <empno>7369</empno><ename>SMITH</ename> <job>CLERK</job> <hiredate>17-DEC-1980</hiredate> </employee>
<employee><empno>7499</empno><ename>ALLEN</ename><job>SALESMAN</job><hiredate>20-FEB-1981</hiredate></employee></employees>';

proc_parseXml(v_rawXMLData );
end;

/




Comments

Popular posts from this blog

Table high water mark tips

Create table of two consecutive months if date range belong to two months

Fill null values with last non-null amount - Oracle SQL