extraer datos a xml
Alguien sabe como poder extraer datos de una tabla en un fichero xml o ascii
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.
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.
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.
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.
