Как сразу напечатать вывод sqlplus - PullRequest
0 голосов
/ 13 июля 2020

У меня очень простой код pl \ sql.

В этом коде я печатаю индекс l oop и жду 1 секунду перед каждой печатью.

My проблема в том, что я хочу, чтобы этот вывод использовался как живой журнал, когда процедура dbms_output.put_line вызывается и печатается - я хочу увидеть вывод немедленно.

В текущем коде - только после его завершения ( 5 секунд ..), он печатает весь результат за один раз ...

set serveroutput on
set echo on

begin

for i in 1..5
loop
dba_maint.pkg_utils.sp_sleep(1);
dbms_output.put_line(i);
end loop;

end;
/

1 Ответ

2 голосов
/ 13 июля 2020

Нет уж, не можешь. Он отображается, когда процедура PL / SQL завершена.

Если вы хотите создать журнал в реальном времени ,

  • создайте таблицу
  • последовательность
  • автономная процедура транзакции, которая
    • вставляет строку в эту таблицу
    • с использованием последовательности (чтобы вы знали, как упорядочивать строки)
    • возможно метка времени (чтобы вы знали, сколько времени занял определенный шаг)
    • фиксация (которая не повлияет на основную транзакцию, поскольку - помните - процедура является автономной первая транзакция)

Затем поместите вызовы процедуры logging в свою долгосрочную процедуру PL / SQL, запустите ее и позвольте это работает. В другом сеансе запросите таблицу журнала для просмотра прогресса.

...