2010-04-08 23 views
5

Voy a llamar a una función almacenada como esto:Oracle Developer SQL se truncar mis resultados

select XML_INVOICE.GENERATE_XML_DOC('84200006823') from dual; 

Los resultados de la consulta a continuación, se muestran en una tabla de debajo, que puedo hacer clic y seleccione "Exportar datos" derecho - > XML

<?xml version='1.0' encoding='UTF8' ?> 
<RESULTS> 
    <ROW> 
    <COLUMN NAME="XML_INVOICE.GENERATE_XML_DOC('84200006823')" <![CDATA[<xml>yada yada</xml><morexml>...]]></COLUMN> 
    </ROW> 
</RESULTS> 

el problema es la "..." - SQL Developer (2.1.0.63 en Linux) no está mostrando todos los datos - su truncando el resultado y añadiendo los puntos suspensivos. Esto no sirve para nada. ¿Cómo puedo exportar TODOS mis datos?

+0

estoy borrando mi responda ya que ha confirmado que el archivo guardado contiene "...". No puedo reproducir con una llamada similar a una función incorporada que produce un resultado largo. Solo para estar seguro: si haces esto en SQL * Plus (con los parámetros SET adecuados) ¿también obtienes el mismo resultado? Además, desde el nombre y el método de la función, parece que el resultado ya está en XML. ¿Por qué necesita convertirlo de nuevo? – dpbradley

+0

¿Qué tan grande es el XML completo. ¿Puedes publicarlo aquí (para que podamos insertarlo en un entorno y ver si podemos reproducirlo) –

+0

el XML es 70kb. No puedo publicar el XML desde sus datos de cliente. En cualquier caso, el contenido real del XML no es relevante, solo el hecho de que está truncado. – nont

Respuesta

0

1) Insertar el resultado de la SP en una tabla

seleccione XML_INVOICE.GENERATE_XML_DOC ('84200006823') en esquema.tabla de la doble;

(sólo habrá una fila)

Uso exp para exportar la tabla

EXP nombre de usuario/contraseña @ instancia TABLAS = (nombre de tabla)

+0

Me gustaría probar esto, pero no estoy seguro de cómo. ¿No necesito crear la tabla primero? ¿Cuál debería ser el esquema de la tabla? y que es instancia? Me parece que esto está en el extremo del servidor, al cual no tengo acceso. ¿No hay alguna forma directa de obtener los resultados de esta consulta?Supongo que podría escribir un programa completo para obtener los resultados de una consulta y escribirla. * suspiro * ¿Pero no es eso para lo que es el desarrollador de SQL? – nont

0

Otra solución sería escribir directamente un archivo XML ver ejemplo de abajo, y ajustar para adaptarse a:

CREATE OR REPLACE PROCEDURE output_xml_file 
(inFileName   Varchar2) --user defined prefix for file name   
AS 

      fp UTL_FILE.FILE_TYPE; 
       v_filename VARCHAR2(150); 
      v_XML_Result VARCHAR2(4000);  

BEGIN 

      v_filename:=infilename||'.xml'; 

      fp := UTL_FILE.FOPEN('c:\pathtofolder', v_filename, 'W', 4000); 

      select XML_INVOICE.GENERATE_XML_DOC(inFileName) into v_XML_Result from dual; 

      UTL_FILE.PUT_LINE(fp, v_XML_Result); 
      UTL_FILE.FCLOSE(fp); 

      EXCEPTION 

      WHEN OTHERS THEN 

       UTL_FILE.FCLOSE(fp); 
       raise; 
    END output_xml_file; 
    /
    SHOW ERRORS; 
    GRANT EXECUTE ON output_xml_file TO PUBLIC; 
+0

Agradezco su respuesta. Sin embargo, este código crea un archivo en el servidor. Los administradores de bases de datos no se lo toman con agrado y, además, no otorgan a los "simples" desarrolladores acceso para leer archivos en el servidor Oracle. Entonces, esto no me ayuda mucho. – nont

-1

Ejecutar como una secuencia de comandos (F5) en lugar de como una declaración (Ctrl + eN ter)

La salida será a continuación, vaya a la ventana de salida de secuencias de comandos en lugar de la salida de la consulta, y usted será capaz de copiar y pegar

+0

gracias por su respuesta. Supongo que no me agrada este problema: me he mudado a un nuevo trabajo desde que esto sucedió, y ni siquiera usamos Oracle aquí, ¡así que no tengo forma de probar esto! Pero recibes un voto favorable de mí porque suena razonable. – nont

+4

Esto no funciona. Estoy teniendo el mismo problema para 'SELECCIONE el texto FROM all_views DONDE view_name = 'xxx'' para una vista compleja Debo realizar ingeniería inversa. La salida con F5 se trunca aún peor. – SAJ14SAJ

5

que estaba teniendo el mismo problema en SQL Developer 4. Esto es lo funcionó para mí:

set long 100000; 
set longchunksize 100000; 

Y luego vuelva a ejecutar la consulta. Ahora debería poder ver la celda completa en la vista de cuadrícula y exportarla a csv también.

(El PO ya no es el mismo empleo o uso de Oracle, pero esta cuestión es uno de los primeros resultados en Google, por lo que espero que esto ayudará a las personas que tienen el mismo problema.)

Cuestiones relacionadas