Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/11/2007, 04:47
ana7599
 
Fecha de Ingreso: noviembre-2007
Ubicación: SEVILLA
Mensajes: 4
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Generar Desde Oracle Ficheros Xml

Muchas gracias por tu ayuda pero tengo un problemilla...no puedo generar el fichero porque no tengo permisos(estoy en el curro...). He creado una tabla temporal y le he insertado todos los datos correctamente pero necesito generar el fichero y np se porque no me reconoce el "xfile utl_file.file_type;" de tu ejemplo, me da error. Me han dicho que lo puedo hacer desde Forms para poder generar el archivo sin permisos...te pongo la funcion original, lo que no se si entenderas muy bien al no conocer el contenido de las tablas, pero lo basico es que CTABLA es el nombre de la tabla y el resto seran los datos que rellenan el segundo campo de mi tabla temporal.

Código:
CREATE OR REPLACE FUNCTION ISOT15.PASAR_A_XML2

return CLOB 

iS

   CURSOR cur
   IS
           
      SELECT  tbprs.ctabla
        FROM ssttbprs tbprs, ssttabla tabla
            WHERE tbprs.csubsi = 'TR' 
                AND tbprs.ctabla = tabla.ctabla
            ORDER BY tabla.norden ASC;
          
    w_tbprs   ssttbprs%ROWTYPE;
   
       CONTEXT   DBMS_XMLQUERY.ctxtype;
       qryctx    DBMS_XMLGEN.ctxhandle;
   
       RESULT    CLOB;
   
BEGIN
   OPEN cur;
   LOOP
   
      FETCH cur
        INTO w_tbprs;
        
      EXIT WHEN cur%NOTFOUND;
      
      CONTEXT := DBMS_XMLGEN.newcontext ('SELECT * FROM ' || w_tbprs.ctabla);
      RESULT := DBMS_XMLGEN.getxml (CONTEXT);
      
/*NO ME INSERTA LOS DATOS, EN EL INSERT INTO SIGUIENTE QUE NO ES TABLA TEMPORAL SÍ QUE ME LOS INSERTA, PERO EL SIGUIENTE INSERT ES EL QUE SE SUSTITUIRIA POR EL ARCHIVO*/
      INSERT INTO DATO_TABLA_XML(NOMBRE_TABLA, RESULTADO)
           VALUES (W_TBPRS.CTABLA, RESULT);
           
      DBMS_XMLGEN.closecontext (CONTEXT);
      
   END LOOP;
   
   CLOSE cur;
   
   CONTEXT := DBMS_XMLGEN.newcontext ('SELECT * FROM DATO_TABLA_XML');
   RESULT := DBMS_XMLGEN.getxml (CONTEXT);
   DBMS_XMLGEN.closecontext (CONTEXT);
  
/*AQUI IRIA LA INSERCION EN EL ARCHIVO .xml, PERO PARA PROBAR UTILIZO UNA TABLA QUE ME RECOGE LOS DATOS.*/
   INSERT INTO proce3(RESULTADO)
       VALUES (RESULT);
       
   COMMIT; 
        
   RETURN RESULT;    

EXCEPTION
   
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE ('Algún error tendrá.');        
   
END;


Estoy buscando tambien la solucion con TEXT_IO de Oracle Forms pero no s¡doy con la solucion ya que no estoy muy puesta en utilizar funciones en el Forms y mucho menos inventarme una asi de complicada...al menos para mi...Muchas Gracias!!