Plsql 开始 v_TransType:=“添加”; v_SessionId:='qwer1234'; v_操作:='RawUpload'; v_rawXMLData:=“7369史密斯职员1980年12月17日 7499 Allensalesman20-FEB-1981'; proc_parseXml_new(v_SessionId、v_TransType、v_操作、v_rawXMLData); 结束; / 声明 v_rawxmldataclob; v_SessionId varchar2(20); v_TransType varchar2(20); v_操作varchar2(20); 开始 v_TransType:=“添加”; v_SessionId:='qwer1234'; v_操作:='CommitUpload'; v_rawXMLData:=“7369史密斯职员1980年12月17日 7499 Allensalesman20-FEB-1981'; proc_parseXml_new(v_SessionId、v_TransType、v_操作、v_rawXMLData); 结束; /

Plsql 开始 v_TransType:=“添加”; v_SessionId:='qwer1234'; v_操作:='RawUpload'; v_rawXMLData:=“7369史密斯职员1980年12月17日 7499 Allensalesman20-FEB-1981'; proc_parseXml_new(v_SessionId、v_TransType、v_操作、v_rawXMLData); 结束; / 声明 v_rawxmldataclob; v_SessionId varchar2(20); v_TransType varchar2(20); v_操作varchar2(20); 开始 v_TransType:=“添加”; v_SessionId:='qwer1234'; v_操作:='CommitUpload'; v_rawXMLData:=“7369史密斯职员1980年12月17日 7499 Allensalesman20-FEB-1981'; proc_parseXml_new(v_SessionId、v_TransType、v_操作、v_rawXMLData); 结束; /,plsql,Plsql,很好的流程描述和支持文档,那么您试图解决的问题是什么?请查看帮助部分。 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.domnode

很好的流程描述和支持文档,那么您试图解决的问题是什么?请查看帮助部分。
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),'/NewDataset/ExcelInfo');
   --
     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 :=  '<NewDataset> <ExcelInfo> <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></ExcelInfo></NewDataset>';

proc_parseXml(v_rawXMLData );
end;

/
create table HR_temp (col1 varchar2(20), col2 varchar2(20), col3 varchar2(20), col4 
varchar2(20), col5 varchar2(20), col6 varchar2(20), col7 varchar2(20),col8 
varchar2(20),col9 varchar2(20),col10 varchar2(20),col11 varchar2(20),col12 
varchar2(20),col13 varchar2(20),col14 varchar2(20)); 
  create table HR_temp_ERROR (ERROR varchar2(20), Status varchar2(20), col1 
   varchar2(20), col2 varchar2(20), col3 varchar2(20), col4 varchar2(20), col5 
   varchar2(20), col6 varchar2(20), col7 varchar2(20),col8 varchar2(20),col9 
   varchar2(20),col10 varchar2(20),col11 varchar2(20),col12 varchar2(20),col13 
    varchar2(20),col14 varchar2(20));
create or replace procedure proc_parseXml_new(pSessionId varchar2, pTransType 
   varchar2, pOperation varchar2, 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);
               v_errorMsg      varchar2(20);

        Begin
              -- CLOB data

          v_Xml_Clob :=pRawXMLdata ;

          IF pOperation = 'RawUpload' THEN
               -- 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);

                    ---Validation Script---
                    If v_job='NA' Then 
                        v_errorMsg:= 'Job code should not be NA';
                        GOTO PrintError;
                    End if;

                    If v_hiredate is NULL Then 
                        v_errorMsg:='Hiredate cannot be blank';
                        GOTO PrintError;
                    End if;

                    insert into HR_temp(col1, col2, col3, col4, col5,col6,col7) 
                    values (v_empno,v_ename,v_job,v_hiredate,pSessionId, pTransType, pOperation);

                    <<PrintError>>
                    insert into HR_temp_ERROR(Error,Status, col1, col2, col3, col4, col5,col6,col7) 
                    values (v_errorMsg,'Failed',v_empno,v_ename,v_job,v_hiredate,pSessionId, pTransType, pOperation);


                End LOOP;   
         ELSE

            for I in
                    (select col1 EmpNo, col2 EName, col3 Job, col4 HireDate, col6 TransType from hr_temp
                    where pOperation='CommitUpload' and col5=pSessionId)
            loop

                If I.TransType='ADD' OR I.TransType='REMOVE AND ADD' THEN


                    insert into emp(empno, ename, job, hiredate) values(I.EmpNo,I.EName,I.Job,I.HireDate); 

                END IF;
            end loop;   



         END IF;


        End;

        /



 declare
    v_rawXMLData clob; 
    v_SessionId varchar2(20); 
    v_TransType varchar2(20); 
    v_Operation varchar2(20);
 begin
   v_TransType:='ADD';
   v_SessionId:='qwer1234';
    v_Operation:='RawUpload';


  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_new(v_SessionId,  v_TransType, v_Operation , v_rawXMLData );
   end;

    /


       declare
            v_rawXMLData clob; 
            v_SessionId varchar2(20); 
            v_TransType varchar2(20); 
            v_Operation varchar2(20);
        begin
            v_TransType:='ADD';
            v_SessionId:='qwer1234';
            v_Operation:='RawUpload';


         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_new(v_SessionId,  v_TransType, v_Operation , v_rawXMLData );
              end;

             /


        declare
            v_rawXMLData clob; 
            v_SessionId varchar2(20); 
            v_TransType varchar2(20); 
            v_Operation varchar2(20);
        begin
            v_TransType:='ADD';
            v_SessionId:='qwer1234';
            v_Operation:='CommitUpload';


         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_new(v_SessionId,  v_TransType, v_Operation , v_rawXMLData );
        end;

        /