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;
/