extraer datos a xml

cdsap
25 de Agosto del 2003
Alguien sabe como poder extraer datos de una tabla en un fichero xml o ascii

nerea
25 de Agosto del 2003
A ver si esto te sirve:


declare
my_xml clob ;
l_ctx dbms_xmlgen.ctxhandle;
l_sql varchar2(400);
begin
l_sql:='select * from nombre_tabla';
l_ctx:=dbms_xmlgen.newcontext(l_sql);
my_xml:=dbms_xmlgen.getxml(l_ctx);
dbms_output.put_line(my_xml);
end;
/


Puede que el PUT_LINE te falle si la salida XML es muy grande. En tal caso, te puedes crear una tabla con un campo CLOB y en el procedimiento hacer una insert en vez de un DBMS_OUTPUT.PUT_LINE, y tendrías el resultado en la tabla.

cdsap
25 de Agosto del 2003
Gracias, pero me puedes explicar un poco el funcionamiento?

nerea
25 de Agosto del 2003
Los pasos a seguir son:

1.- Entra a SQL*Plus:

SQL> create table tabla_XML (XML clob);

SQL> create or replace procedure pasar_a_XML (tabla varchar2) is
BEGIN
declare
my_xml clob ;
l_ctx dbms_xmlgen.ctxhandle;
l_sql varchar2(400);
begin
l_sql:='select * from '||tabla;
l_ctx:=dbms_xmlgen.newcontext(l_sql);
my_xml:=dbms_xmlgen.getxml(l_ctx);
delete from tabla_XML;
insert into tabla_XML values(my_xml);
end;
END;
/

SQL> execute pasar_a_XML('nombre_tabla');

En este momento el resultado lo tienes en la tabla tabla_xml. Si lo quieres pasar a fichero sólo tendrías que hacer una SELECT:

SQL> set long 10000000
SQL> set heading off
SQL> set pagesize 10000
SQL> set linesize 500
SQL> spool fichero.xml
SQL> select * from tabla_xml;
SQL> spool off

Con esto te queda en el fichero.xml el resultado.