Wie leite ich die Ausgabe von DBMS_OUTPUT.PUT_LINE in eine Datei um?
Brauche ich zum Debuggen von pl/sql-Abbildung Zeiten der Verfahren, die ich verwenden möchte:
SELECT systimestamp FROM dual INTO time_db;
DBMS_OUTPUT.PUT_LINE('time before procedure ' || time_db);
aber ich verstehe nicht, wo der Ausgang geht auf und wie kann ich die Umleitung einer log-Datei enthält alle Daten, die ich sammeln möchten?
InformationsquelleAutor der Frage | 2009-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
DBMS_OUTPUT
ist nicht das beste tool zum Debuggen, da die meisten Umgebungen verwenden Sie es nicht nativ. Wenn Sie möchten, erfassen Sie die Ausgabe vonDBMS_OUTPUT
jedoch, Sie würde einfach dieDBMS_OUTPUT.get_line
Verfahren.Hier ist ein kleines Beispiel:
InformationsquelleAutor der Antwort Vincent Malgrat
Als alternative zu in eine Datei schreibt, wie über das schreiben in eine Tabelle? Anstelle von aufrufen von DBMS_OUTPUT.PUT_LINE könnten Sie Ihr eigen nennen DEBUGGEN.OUTPUT-Verfahren so etwas wie:
Den Einsatz einer autonomen Transaktion können Sie behalten debug-Meldungen produziert von Transaktionen, die bekommen ein Rollback (z.B. nachdem eine Ausnahme ausgelöst wird), wie geschehen würde, wenn Sie mit einer Datei.
Den g_debugging Boolesche variable ist eine package-variable, die kann standardmäßig auf false und auf true gesetzt, wenn die debug-Ausgabe erforderlich ist.
Natürlich, Sie brauchen, um zu verwalten, dass die Tabelle so, dass Sie nicht wächst, für immer! Eine Möglichkeit wäre ein job, der läuft bei nächtlichen/wöchentlich und löscht alle debug-Meldungen, die sind "alt".
InformationsquelleAutor der Antwort Tony Andrews
verwenden
set serveroutput on;
Beispiel:
InformationsquelleAutor der Antwort Mahmoud Hanafy
Wenn Sie einfach nur testen Sie Ihre PL/SQL, die in SQL-Plus können Sie direkt zu einer Datei wie dieser:
IDEs wie Toad und SQL Developer können, erfassen Sie die Ausgabe in andere Wege, aber ich bin nicht vertraut mit wie.
InformationsquelleAutor der Antwort Tony Andrews
Neben Tony die Antwort, wenn Sie schauen, um herauszufinden, wo Sie Ihre PL/SQL-Programm zu verbringen, ist es Zeit, es lohnt sich auch, Auschecken, diese Teil der Oracle-PL/SQL-Dokumentation.
InformationsquelleAutor der Antwort Ian Carpenter
Mit
UTL_FILE
stattDBMS_OUTPUT
wird die Ausgabe in eine Datei umleiten:http://oreilly.com/catalog/oraclebip/chapter/ch06.html
InformationsquelleAutor der Antwort Rafa de Castro
Als kleiner Hinweis, denken Sie daran, dass alle diese Ausgabe ist, die generiert die server-Seite.
Mittels DBMS_OUTPUT, wird der text generiert wird, der server führt die Abfrage aus und in einem Puffer gespeichert. Es wird dann umgeleitet, um Ihre client-app, wenn der server beendet die Abfrage Daten abrufen. Das heißt, Sie bekommen nur diese info, wenn die Abfrage beendet.
Mit UTL_FILE alle protokollierten Informationen werden in einer Datei gespeichert auf dem server. Wenn die Ausführung beendet, Sie haben zu navigieren, um diese Datei zu, um die Informationen.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Juan Calero
Seine möglich schreiben einer Datei direkt auf dem DB-server, der als Host für die Datenbank, und, das alles verändern wird zusammen mit der Ausführung des PL/SQL-Programm.
Diese nutzt die Oracle directory
TMP_DIR
; Sie haben es zu erklären, und erstellen Sie das unten stehende Verfahren:Hier ist, wie es zu benutzen:
1) Starten Sie diese von Ihrem SQL*PLUS-client:
2) auf dem Datenbank-server, öffnen Sie eine shell und
InformationsquelleAutor der Antwort J. Chomel
Einen alten thread, aber es gibt eine alternative.
Seit 9i Sie können weitergeleitete-Tabelle Funktion.
Erstellen Sie zunächst eine Art, wie eine Tabelle von varchar:
Sekunde, wickeln Sie Ihren code in einer Pipeline-Funktion-Erklärung:
Ersetzen Sie alle
DBMS_OUTPUT.PUT_LINE
fürPIPE ROW
.Schließlich rufen Sie es wie folgt:
Hoffe, es hilft.
InformationsquelleAutor der Antwort Felypp Oliveira
Versuchen Sie Dies:
InformationsquelleAutor der Antwort Mark