Als Alternative zu einer Datei zu schreiben, wie etwa an einen Tisch zu schreiben? Stattdessen DBMS_OUTPUT.PUT_LINE zu nennen könnten Sie Ihre eigen DEBUG.OUTPUT Prozedur etwas wie nennen:
procedure output (p_text varchar2) is
pragma autonomous_transaction;
begin
if g_debugging then
insert into debug_messages (username, datetime, text)
values (user, sysdate, p_text);
commit;
end if;
end;
Die Verwendung einer autonomen Transaktion ermöglicht es Ihnen, Debug-Meldungen von Transaktionen erzeugt zu behalten, die zurückgesetzt erhalten (zB nach einer Ausnahme angehoben), wie es passieren würde, wenn Sie eine Datei verwenden würden.
Die boolesche Variable g_debugging ist eine Paketvariable, die standardmäßig auf "false" gesetzt und auf "true" gesetzt werden kann, wenn eine Debug-Ausgabe erforderlich ist.
Natürlich müssen Sie diese Tabelle so verwalten, dass sie nicht für immer wächst! Ein Weg wäre ein Job, der jede Nacht/Woche läuft und alle Debug-Nachrichten löscht, die "alt" sind.
dank für die schnelle Antwort :) werde ich versuchen, dies ein Versuch zu geben (aber es sou nds wirklich schwierig, es zu funktionieren), haben Sie eine Idee, wie man das DBMS_OUTPUT zu einer Datei druckt (es kann einfacher sein) –