Создание объекта XML с помощью пакета DBMS_XMLDOM с передачей в виде CLOB
function XMLBuilder return clob is doc DBMS_XMLDOM.DOMDocument; -- объект документа rootElement DBMS_XMLDOM.DOMElement; -- корневой элемент параметров Л/С paramsElement1 DBMS_XMLDOM.DOMElement; -- элемент 1 уровня paramsElement2 DBMS_XMLDOM.DOMElement; -- элемент 2 уровня node DBMS_XMLDOM.DOMNode; -- узел c CLOB; -- курсор для последовательной генерации элементов cursor cur is select rownum from all_users where rownum < 5; x integer; -- хранение переменной из курсора begin doc := dbms_xmldom.createDocument('http://www.w3.org/2001/XMLSchema', null, null); rootElement := DBMS_XMLDOM.createElement(doc, 'ROOT'); -- корневой элемент node := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(doc), DBMS_XMLDOM.makeNode(rootElement)); DBMS_XMLDOM.setAttribute(rootElement, 'param1', 1); -- атрибуты корн. эл. DBMS_XMLDOM.setAttribute(rootElement, 'param2', 'v'); -- 1 уровень paramsElement1 := DBMS_XMLDOM.createElement(doc, 'LEVEL1'); -- paramsElement1 является дочерним по отношению к rootElement node := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(rootElement), DBMS_XMLDOM.makeNode(paramsElement1)); -- узлы-элементы 1 уровня open cur; loop fetch cur into x; exit when cur%NOTFOUND; paramsElement2 := DBMS_XMLDOM.createElement(doc, 'UNIT'); helpNode := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(paramsElement1), DBMS_XMLDOM.makeNode(paramsElement2)); DBMS_XMLDOM.setAttribute(paramsElement1, 'param', x); end loop; close cur; dbms_lob.createtemporary(c, true, dbms_lob.session); c := 'dddd'; -- такРезультат:работать не будет dbms_xmldom.writeToClob(doc, c); return('' || chr(10) || c); end;
<root param1="1" param2="v"> <level1> <unit param="1"/> <unit param="2"/> <unit param="3"/> <unit param="4"/> </level1> </root>
Комментариев нет :
Отправить комментарий