jueves, 18 de abril de 2013

Directorio Oracle PL/SQL a XML


SELECT dbms_xmlgen.GETXML( ' select  e.NUM_CUENTA "Cuenta_Contable",                                                     
                               e.DES_CUENTAESP "Descripcion"                                   
                               FROM   co_Catalogo  e                                                                                   
                               WHERE  cod_compania=01001001' ) FROM DUAL;

En este ejemplo se muestra el paquete de oracle DBMS_XMLGEN.GETXML donde se va a hacer un SELECT pero no como contenido si no como una cuerda…donde vamos a disponer de una tabla “e” con los campos que deseamos convertir en XML y su respectivo alias, donde va a existir una sentencia que debe de ser válida en la base de datos.
                           
                           
SELECT  xmlelement("CuentaContable",  xmlCONCAT   
 (xmlelement("Cuenta_Contable",e.NUM_CUENTA)                                                     
 ,xmlelement("Descripcion",e.DES_CUENTAESP)                                                       
 ,xmlelement("Moneda",e.Cod_moneda)                                                                                                                                  
 )) Registro                                                                                                      
                    FROM   co_Catalogo  e                                                                                   
                    WHERE  cod_compania= '01001001'; 

  
En este otro ejemplo observamos el XMLELEMENT que es un elemento del XML, hay que recordar que un archivo XML se divide por jerarquías, por ejemplo:

<Árbol <Ramas> </Ramas></Árbol>


En este ejemplo se le asigna al XML el nombre o alias Registro que es el que se mostrará en el respectivo archivo.

EL XMLCONCAT sirve para concatenar de un modo XML, mientras que un CONCAT simple se restringe a concatenar en forma de contenido.

Procedimiento para ejecutar un fichero Oracle en XML:

CREATE OR REPLACE PROCEDURE UsuarioOra.exportacuentas_xml (compania varchar2) IS                                                                             
CURSOR xmlcur IS                                                                                                    

SELECT  xmlelement("CuentaContable",XMLATTRIBUTES(TIP_NIVEL),
        xmlCONCAT  (xmlelement("Cuenta_Contable",e.NUM_CUENTA)                                                      
                    ,xmlelement("Descripcion",e.DES_CUENTAESP)                                                       
                    ,xmlelement("Moneda",e.Cod_moneda),
xmlelement("Movimientos",(select xmlconcat (xmlelement("fechadoc",to_Char(z.FEC_DOCUMENTO,'DD-MON-YEAR')),                                             
                  xmlelement("Monto",z.Mon_monto)
                                           )
 from CO_DETALLED Z
 where z.cod_compania=e.cod_compania
 and   z.num_cuenta=e.num_cuenta)))
 ).getStringval()Registro                                                                                                     

FROM   CO_CATALOGO  E                                                                                    
WHERE  cod_compania= compania; 
     
XMLDATA CLOB;                                                                                        
     
Cadena VARCHAR2(32767);
file1 UTL_FILE.FILE_TYPE;
                                                                                                                    
BEGIN      
      
       file1 := UTL_FILE.FOPEN('XML','prueba.xml','W',256);
       UTL_FILE.PUT_LINE(file1,''); 
       For k in xmlcur loop  
       UTL_FILE.PUT_LINE(file1, k.Registro);     
                       end loop;
 UTL_FILE.PUT_LINE(file1,'
');                                                                      
 UTL_FILE.FCLOSE(file1);                                                                
END;

No hay comentarios:

Publicar un comentario