В качестве альтернативы записи в файл, как о записи в таблице? Вместо вызова DBMS_OUTPUT.PUT_LINE вы могли бы назвать свою собственную процедуру DEBUG.OUTPUT что-то вроде:
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;
Использование автономной транзакции позволяет сохранять отладочные сообщения, полученные от операций, которые получают откат (например, после того, как исключение составляет поднято), как это было бы, если бы вы использовали файл.
Булева переменная g_debugging - это переменная пакета, для которой по умолчанию используется значение false, и установлено значение true, когда требуется отладочный вывод.
Конечно, вам нужно управлять этим столом, чтобы он не рос вечно! Один из способов - это работа, выполняемая каждую ночь/неделю и удаление любых отладочных сообщений, которые являются «старыми».
спасибо за быстрый ответ :) я попытаюсь дать этому попытку (но ему nds действительно сложно заставить его работать), вы знаете, как печатать DBMS_OUTPUT в файл (это может быть проще) –