Friday 14 June 2013

how to write sample plsql xml procedure and making validations on generated xml

declare
v_xml xmltype;
v_nodelist xmldom.DOMNodeList;
v_domdoc xmldom.DOMDocument;
v_domnode xmldom.DOMNode;
v_ele xmldom.DOMElement;
v_buff varchar2(20000);
v_value varchar2(100);
begin
select merge_xml into v_xml from TEMP_XML;
v_domdoc:=xmldom.newDOMDocument(v_xml);
v_nodelist:=xmldom.getElementsByTagName(v_domdoc,'DEPTDETAILS');
for i in 0..xmldom.getLength(v_nodelist)-1 loop
v_domnode:=xmldom.item(v_nodelist,i);
xmldom.writeToBuffer(v_domnode,v_buff);
DBMS_OUTPUT.put_line('before updation....!!!!!!!! ');
dbms_output.put_line(v_buff);
v_ele:=xmldom.makeElement(v_domnode);
v_value:=xmldom.getAttribute(v_ele,'deptno');
if v_value =10 then
xmldom.setAttribute(v_ele,'deptno',100);
elsif v_value=20 then
xmldom.setAttribute(v_ele,'deptno',200);
elsif v_value=30 then
xmldom.setAttribute(v_ele,'deptno',300);
elsif v_value=40 then
xmldom.setAttribute(v_ele,'deptno',400);
end if;
DBMS_OUTPUT.put_line('value is: '||v_value);
xmldom.writeToBuffer(v_domnode,v_buff);
DBMS_OUTPUT.put_line('after updation....!!!!!!!! ');
DBMS_OUTPUT.put_line(v_buff);
end loop;
end;

============================================================================

declare
v_domdoc xmldom.DOMDocument;
v_domnode xmldom.DOMNode;
v_node xmldom.DOMNode;
v_ele xmldom.DOMElement;
v_chilnode xmldom.DOMNode;

cursor dept_cur is select * from scott.dept;
cursor emp_cur(v_deptno number) is select * from scott.emp where deptno=v_deptno;
v_xml xmltype;

begin

v_domdoc:=xmldom.newDOMDocument();
xmldom.setVersion(v_domdoc,'1.0');
v_domnode:=xmldom.makeNode(v_domdoc);
v_ele:=xmldom.createElement(v_domdoc,'Details');
v_node:=xmldom.appendChild(v_domnode,xmldom.makeNode(v_ele));

for dept_rec in dept_cur loop
v_ele:=xmldom.createElement(v_domdoc,'deptdetails');
xmldom.setAttribute(v_ele,'deptno',dept_rec.deptno);
xmldom.setAttribute(v_ele,'dname',dept_rec.dname);
xmldom.setAttribute(v_ele,'loc',dept_rec.loc);
v_domnode:=xmldom.appendChild(v_node,xmldom.makeNode(v_ele));

for emp_rec in emp_cur(dept_rec.deptno) loop
v_ele:=xmldom.createElement(v_domdoc,'employeedetails');
xmldom.setAttribute(v_ele,'empno',emp_rec.empno);
xmldom.setAttribute(v_ele,'ename',emp_rec.ename);
xmldom.setAttribute(v_ele,'job',emp_rec.job);
v_chilnode:=xmldom.appendChild(v_domnode,xmldom.makeNode(v_ele));
end loop;
end loop;
v_xml:=xmldom.getxmltype(v_domdoc);
delete from ram.temp_xml;
commit;
insert into ram.TEMP_XML(MERGE_XML) values (v_xml);
commit;
end;-- select * from ram.temp_xml;

==========================================================================================
declare
v_ctx DBMS_XMLGEN.ctxHandle;
v_domdoc dbms_xmldom.DOMDocument;
v_domnode dbms_xmldom.DOMNode;
v_xml xmltype;
v_mem_select varchar2(2000);
begin
v_mem_select:='select a.CLAIM_NUMBER,a.CLAIM_FILE_NUMBER,a.AUTH_NUMBER,a.CLAIM_SETTLEMENT_NUMBER from app.CLM_GENERAL_DETAILS a
where rownum=1';
v_ctx := dbms_xmlgen.newContext(v_mem_select);
v_xml:=dbms_xmlgen.getXMLType(v_ctx);
delete from ram.TEMP_XML;
commit;
insert into ram.TEMP_XML(MERGE_XML,REMARKS) values (v_xml,'before');
v_mem_select:='select a.CLAIM_NUMBER,a.CLAIM_FILE_NUMBER,a.AUTH_NUMBER,a.CLAIM_SETTLEMENT_NUMBER from app.CLM_GENERAL_DETAILS a
where rownum=1';
v_ctx := dbms_xmlgen.newContext(v_mem_select);
dbms_xmlgen.setRowSetTag(v_ctx,'ram');
dbms_xmlgen.setRowTag(v_ctx,'posam');
v_xml:=dbms_xmlgen.getXMLType(v_ctx);
insert into ram.TEMP_XML(MERGE_XML,remarks) values (v_xml,'after');
commit;
end;
-- select * from ram.temp_xml;

===========================================================

declare
v_xml xmltype;
v_domnode xmldom.DOMNode;
v_domlist xmldom.DOMNodeList;
v_ele xmldom.DOMElement;
v_domdoc xmldom.DOMDocument;
V_BUFF VARCHAR2(20000);


begin
v_xml:=XMLTYPE('<RAM>
<posam>
<CLAIM_NUMBER CLAIM_NUMBER="ABC232">KOC-02-04-CR-L07319</CLAIM_NUMBER>
<CLAIM_FILE_NUMBER CLAIM_NUMBER="ABC232">KOC-01-04-CN-L07606</CLAIM_FILE_NUMBER>
<CLAIM_SETTLEMENT_NUMBER CLAIM_NUMBER="ABC232">KOC-02-04-CR-L07319</CLAIM_SETTLEMENT_NUMBER>
</posam>
</RAM>');

v_domdoc:=xmldom.newDOMDocument(v_xml);
v_domlist:=xmldom.getElementsByTagName(v_domdoc,'posam');
for i in 0..xmldom.getLength(v_domlist)-1
loop
v_domnode:=xmldom.item(v_domlist,i);
XMLDOM.writeToBuffer(V_DOMNODE,V_BUFF);
DBMS_OUTPUT.PUT_LINE(V_BUFF);
V_DOMLIST:=XMLDOM.getChildNodes(V_DOMNODE);
FOR J IN 0..XMLDOM.getLength(V_DOMLIST) LOOP
V_DOMNODE:=XMLDOM.item(V_DOMLIST,J);
XMLDOM.writeToBuffer(V_DOMNODE,V_BUFF);
DBMS_OUTPUT.PUT_LINE(V_BUFF);
v_ele:=xmldom.makeElement(v_domnode);
xmldom.setAttribute(v_ele,'CLAIM_NUMBER','ABC143');
END LOOP;
END LOOP;
DELETE FROM RAM.TEMP_XML;
COMMIT;
INSERT INTO RAM.TEMP_XML (MERGE_XML) VALUES (V_XML);
COMMIT;
END;

--- SELECT * FROM RAM.TEMP_XML;
========================================================================================

DECLARE
V_XML XMLTYPE;
V_DOMNODE XMLDOM.DOMNode;
V_DOMDOC XMLDOM.DOMDocument;
V_DOMLIST XMLDOM.DOMNodeList;
V_ELE XMLDOM.DOMElement;
BEGIN
V_XML:=XMLTYPE('<RAM>
<posam>
<CLAIM_NUMBER CLAIM_NUMBER="ABC143">KOC-02-04-CR-L07319</CLAIM_NUMBER>
<CLAIM_FILE_NUMBER CLAIM_NUMBER="ABC143">KOC-01-04-CN-L07606</CLAIM_FILE_NUMBER>
<CLAIM_SETTLEMENT_NUMBER CLAIM_NUMBER="ABC143">KOC-02-04-CR-L07319</CLAIM_SETTLEMENT_NUMBER>
</posam>
</RAM>');

V_DOMDOC:=XMLDOM.newDOMDocument(V_XML);
XMLDOM.setVersion(V_DOMDOC,'1.0');
V_DOMLIST:=XMLDOM.getElementsByTagName(V_DOMDOC,'RAM');
FOR I IN 0..XMLDOM.getLength(V_DOMLIST)-1 LOOP
V_DOMNODE:=XMLDOM.item(V_DOMLIST,I);
V_ELE:=XMLDOM.makeElement(V_DOMNODE);
XMLDOM.setAttribute(V_ELE,'MSG_ID','HI WELCOME TO THE XML WORLD PARENT NODE');
V_DOMLIST:=XMLDOM.getChildNodes(V_DOMNODE);
FOR J IN 0..XMLDOM.getLength(V_DOMLIST)-1 LOOP
V_DOMNODE:=XMLDOM.item(V_DOMLIST,J);
V_ELE:=XMLDOM.makeElement(V_DOMNODE);
XMLDOM.setAttribute(V_ELE,'MSG_ID','HI WELCOM TO THE XML WORLD CHILD NODE');
END LOOP;
END LOOP;
DELETE FROM RAM.TEMP_XML ;
COMMIT;
INSERT INTO RAM.TEMP_XML (MERGE_XML) VALUES(V_XML);
COMMIT;
END;

XMLDOM.SET
--- SELECT * FROM RAM.TEMP_XML;
=====================================================================

declare
v_select varchar2(2000);
v_ctx dbms_xmlgen.ctxHandle;
v_xml xmltype;
v_domdoc xmldom.DOMDocument;
v_domnode xmldom.domnode;

begin
v_select:='select * FROM SCOTT.dept';
v_ctx:=dbms_xmlgen.newContext(v_select);
DBMS_XMLGEN.setRowSetTag(V_CTX,'EMPLOYEEDETAILS');
V_XML:=DBMS_XMLGEN.getXMLType(V_CTX);
v_domdoc:=xmldom.newDOMDocument(v_xml);
xmldom.setVersion(v_domdoc,'1.0');
v_domnode:=xmldom.makeNode(v_domdoc);
DELETE FROM RAM.TEMP_XML;
COMMIT;
INSERT INTO RAM.TEMP_XML(MERGE_XML) VALUES (V_XML);
COMMIT;
END; -- SELECT * FROM RAM.TEMP_XML;
===========================================================================


declare
v_ctx DBMS_XMLGEN.ctxHandle;
v_domdoc dbms_xmldom.DOMDocument;
v_domnode dbms_xmldom.DOMNode;
v_xml xmltype;
v_mem_select varchar2(2000);
V_NODELIST XMLDOM.DOMNodeList;
v_ele dbms_xmldom.DOMElement;
begin
v_mem_select:='select a.CLAIM_NUMBER,a.CLAIM_FILE_NUMBER,a.AUTH_NUMBER,a.CLAIM_SETTLEMENT_NUMBER from app.CLM_GENERAL_DETAILS a
where rownum=1';
v_ctx := dbms_xmlgen.newContext(v_mem_select);
v_xml:=dbms_xmlgen.getXMLType(v_ctx);
delete from ram.TEMP_XML;
commit;
insert into ram.TEMP_XML(MERGE_XML,REMARKS) values (v_xml,'before');
v_mem_select:='select a.CLAIM_NUMBER,a.CLAIM_FILE_NUMBER,a.AUTH_NUMBER,a.CLAIM_SETTLEMENT_NUMBER from app.CLM_GENERAL_DETAILS a
where rownum=1';
v_ctx := dbms_xmlgen.newContext(v_mem_select);
dbms_xmlgen.setRowSetTag(v_ctx,'ram');
dbms_xmlgen.setRowTag(v_ctx,'posam');
v_xml:=dbms_xmlgen.getXMLType(v_ctx);
v_xml:=XMLTYPE('<posam>
<CLAIM_NUMBER>KOC-02-04-CR-L07319</CLAIM_NUMBER>
<CLAIM_FILE_NUMBER>KOC-01-04-CN-L07606</CLAIM_FILE_NUMBER>
<CLAIM_SETTLEMENT_NUMBER>KOC-02-04-CR-L07319</CLAIM_SETTLEMENT_NUMBER>
</posam>');
v_domdoc:=dbms_xmldom.newDOMDocument(v_xml);
v_domnode:=dbms_xmldom.makeNode(v_domdoc);
V_NODELIST:=DBMS_XMLDOM.getElementsByTagName(v_domdoc,'posam');
FOR I IN 0..DBMS_XMLDOM.getLength(V_NODELIST)-1
LOOP
V_DOMNODE:=DBMS_XMLDOM.item(V_NODELIST,I);
V_ELE:=DBMS_XMLDOM.makeElement(V_DOMNODE);
DBMS_XMLDOM.setAttribute(V_ELE,'CLAIM_NUMBER','ABC124234');
dbms_xmldom.setAttribute(V_ELE,'CLAIM_FILE_NUMBER','ABCFILE232');
END LOOP;
insert into ram.TEMP_XML(MERGE_XML,remarks) values (v_xml,'after');
commit;
end;
-- select * from ram.temp_xml;

No comments:

Post a Comment