| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Creating XML documents using DOM in PL/SQL
Hi all
I want to create a XML document from a SQL query. I have done this according to the code below.
PROCEDURE test_danne
IS
xmlDoc xmldom.DOMDocument;
xmlNode xmldom.DOMNode;
xmlNode1 xmldom.DOMNode;
xmlElem1 xmldom.DOMElement;
xmlElem2 xmldom.DOMElement;
xmlText xmldom.DOMText;
CURSOR cur_emp IS
SELECT *
FROM emp
WHERE empno = 7369;
row_emp emp%ROWTYPE;
xmlDoc := xmldom.newDOMDocument;
xmlNode := xmldom.makeNode(xmlDoc);
OPEN cur_emp;
LOOP
FETCH cur_emp INTO row_emp;
EXIT WHEN cur_emp%NOTFOUND;
xmlElem1 := xmldom.createElement(xmlDoc,'root');
xmlNode :=
xmldom.appendChild(xmlNode,xmldom.makeNode(xmlElem1));
xmlElem2 := xmldom.createElement(xmlDoc,'name');
xmldom.setAttribute(xmlElem2, 'empno',TO_CHAR(row_emp.empno));
xmlNode :=xmldom.appendChild(xmlNode,xmldom.makeNode(xmlElem2));
xmlText := xmldom.createTextNode(xmlDoc,row_emp.ename);
xmlNode := xmldom.appendChild(xmlNode,xmldom.makeNode(xmlText));
END LOOP;
CLOSE cur_emp;
xmldom.writeToFile(xmlDoc,'c:\xmltest1.txt');
END;
This works perfectly if i only get one row in my cursor. I get an output
like this:
<name empno="7369">SMITH</name>
</root>
The problem is when i get more than one record in my cursor. If i change the
cursor definition to:
CURSOR cur_emp IS
SELECT *
FROM emp;
<root>
<name empno="7369">SMITH</name>
<name empno="7389">CARL</name>
<name empno="7239">ANNA</name>
</root>
but i get an error: ORA-29532: Unhandled Java-exception :
java.lang.NullPointerException
Anybody got an idea?
Please mail me suggestions to daniel.carlsson_at_gravity.se (can't use news at work).
TIA Daniel Received on Tue Jan 30 2001 - 17:42:03 CST
![]() |
![]() |