2010-04-08 6 views
5

ich eine gespeicherte Funktion wie diese bin Aufruf:SQL Developer ist Kürzen meine Ergebnisse

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

Die Abfrageergebnisse dann unterhalb in einer Tabelle angezeigt, die ich rechts klicken und wählen Sie „Exportieren von Daten“ - > 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> 

das Problem ist die "..." - SQL Developer (2.1.0.63 auf Linux) wird alle Daten nicht angezeigt - sein das Ergebnis und Anhängen des Auslassungs Kürzen. Das nützt mir nichts. Wie kann ich ALLE meine Daten exportieren?

+0

ich lösche meine Antwort, da Sie bestätigt haben, dass die gespeicherte Datei "..." enthält. Ich kann mit einem ähnlichen Aufruf einer eingebauten Funktion, die eine lange Ausgabe erzeugt, nicht reproduzieren. Nur um sicher zu sein - wenn Sie dies in SQL * Plus (mit den entsprechenden SET-Parametern) tun, erhalten Sie auch das gleiche Ergebnis? Von dem Funktionsnamen und der Methode scheint es, dass das Ergebnis bereits in XML ist - warum müssen Sie es erneut konvertieren? – dpbradley

+0

Wie groß ist das vollständige XML? Kannst du es hier posten (damit wir in eine Umgebung einfügen können und sehen, ob wir reproduzieren können) –

+0

ist das XML 70kb. Ich kann das XML seit seinen Kundendaten nicht veröffentlichen. In jedem Fall ist der eigentliche Inhalt des XML nicht relevant - nur die Tatsache, dass es abgeschnitten ist. – nont

Antwort

0

1) Legen das Ergebnis der SP in eine Tabelle

select XML_INVOICE.GENERATE_XML_DOC ('84200006823') in schema.tabelle von dual;

Verwendung exp (wird nur eine Zeile sein) Tabelle

EXP Benutzername/Passwort @ Beispiel TABLES exportieren = (Tabellenname)

+0

Ich möchte dies versuchen, aber ich bin mir nicht sicher, wie. Muss ich die Tabelle nicht zuerst erstellen? Was sollte das Tabellenschema sein? und was ist eine Instanz? Es sieht für mich so aus, als wäre es auf dem Server-Ende, auf das ich keinen Zugriff habe. Gibt es keine direkte Möglichkeit, die Ergebnisse dieser Abfrage zu erhalten?Ich nehme an, ich könnte ein ganzes Programm schreiben, um die Ergebnisse einer Anfrage zu bekommen und es aufzuschreiben. * seufz * Aber ist das nicht, was SQL-Entwickler ist? – nont

0

Eine andere Lösung wäre direkt eine XML-Datei zu schreiben sein Beispiel unten und passen zu passen:

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

Ich freue mich über Ihre Antwort. Dieser Code erstellt jedoch eine Datei auf dem Server! Die DBAs nehmen das nicht gerne an, und außerdem gewähren sie "einfachen" Entwicklern keinen Zugang zu den Dateien auf dem Oracle-Server. Also, das hilft mir nicht viel. – nont

-1

Run als Script (F5) und nicht als Statement (Strg + En ter)

Der Ausgang wird dann an das Ausgabefenster Script gehen, anstatt die Ausgabe der Abfrage, und Sie werden in der Lage sein, kopieren und es

+0

danke für deine antwort. Ich schätze, es gibt kein Gefallen an diesem Problem - ich bin in einen neuen Job gezogen, seit das passiert ist, und wir benutzen Oracle nicht einmal hier, also habe ich keine Möglichkeit, das zu testen! Aber du bekommst eine positive Bewertung von mir, weil es vernünftig klingt. – nont

+4

Dies funktioniert nicht. Ich habe das gleiche Problem für 'SELECT Text FROM all_views WHERE view_name = 'xxx'' für eine komplexe Sicht muss ich Reverse-Engineer. Die Ausgabe mit F5 ist noch schlechter abgeschnitten. – SAJ14SAJ

5

Ich war in SQL Developer 4. Hier das gleiche Problem haben, was hat für mich gearbeitet:

set long 100000; 
set longchunksize 100000; 

Und dann die Abfrage erneut ausführen. Sie sollten nun die vollständige Zelle in der Rasteransicht sehen und sie auch in CSV exportieren können.

(Die OP ist nicht mehr mit dem gleichen Job oder mit Oracle, aber diese Frage ist eines der ersten Ergebnisse in Google, so hoffentlich wird dies die Menschen helfen, das gleiche Problem.)