Генерировать XML-файл с помощью настраиваемых тегов XML из таблицы базы данных оракула

Я работаю над базой данных Oracle 9ir2 Мне нужно преобразовать некоторые таблицы в XML-файлы с помощью тегов пользовательского формата.

например: я хочу сгенерировать XML из некоторых столбцов в emp-таблице, а затем сгенерировать файл с именем «myxmlfile.xml» следующим образом:

<?xml version="1.0" encoding="UTF-8"?> <entity-engine-xml> <myxmlfile EMPNO="8401" ENAME="JHON" HIREDATE="1988-12-30" SAL="5000" DEPTNO="10" /> <myxmlfile ... /> <myxmlfile ... /> </entity-engine-xml> 
  1. как создать пользовательский XML-файл с тегами, как указано выше, и каждый раз, когда пользователь должен это делать, другими словами «на запрос пользователя» с помощью pl / sql, как использовать функции oracle XML для вывода настраиваемых желаемых тегов ?.
  2. как преобразовать xmltype в varchar2 ??? … to_char () не может преобразовать XMLtype в char.
  3. что является самым простым способом создания XML-файла на стороне клиента?

примечание: пользовательское приложение работает на компьютерах XP, созданных старыми инструментами разработчика oracle forms6i.

вы делаете это с помощью XMLELEMENT и т. д.

 select xmlelement("entity-engine-xml", xmlagg( xmlelement( "myxmlfile", xmlattributes(empno as "EMPNO", ename as "ENAME", to_char(hiredate, 'yyyy-mm-dd') as "HIREDATE", sal as "SAL", deptno as "DEPTNO" ) ) ) ).getclobval() from emp; 

,

 how to convert xmltype to varchar2 ??? 

Для этого функция getStringVal . т.е. см. в моем примере выше, я использовал getClobval . есть эквивалент getstringval() .

EDIT: буферизация:

 set trims on feedback off heading off long 50000 linesize 32767 pagesize 0 col c format a32767 spool c:\temp\foo.xml select xmlelement("entity-engine-xml", xmlagg( xmlelement( "myxmlfile", xmlattributes(empno as "EMPNO", ename as "ENAME", to_char(hiredate, 'yyyy-mm-dd') as "HIREDATE", sal as "SAL", deptno as "DEPTNO" ) ) ) ).transform(xmltype('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> </xsl:stylesheet>')) c from emp; spool off