Там какой-либо путь состоит в том, чтобы сбросить вывод от МН / SQL в Oracle?

Обычно рекомендуется иметь эти <script>, тег максимально опускает страницу (не в голове, а в теле).

Кроме этого, я не думаю, что это имеет большую часть значения, потому что тело не может быть проанализировано, если Вы не имеете эти <head> раздел, полностью загруженный. И, Вы хотите, чтобы Ваш <link> тег был в голове, как Вы хотите, чтобы Ваше моделирование произошло, поскольку браузер представляет Вашу страницу и не после этого!

43
задан MatthewMartin 16 May 2014 в 03:42
поделиться

3 ответа

Не совсем. DBMS_OUTPUT работает следующим образом: ваш блок PL / SQL выполняется на сервере базы данных без взаимодействия с клиентом. Поэтому, когда вы вызываете PUT_LINE, он просто помещает этот текст в буфер в памяти на сервере. Когда ваш блок PL / SQL завершается, управление возвращается клиенту (в данном случае я предполагаю SQLPlus); в этот момент клиент получает текст из буфера, вызывая GET_LINE, и отображает его.

Таким образом, единственный способ заставить вывод чаще появляться в файле журнала - это разбить большой блок PL / SQL на несколько меньших блоков, чтобы управление чаще возвращалось клиенту. Это может оказаться непрактичным в зависимости от того, что делает ваш код.

Другими альтернативами являются использование UTL_FILE для записи в текстовый файл, который может быть сброшен в любой момент, или использование процедуры автономной транзакции для вставки операторов отладки в таблица базы данных и фиксация после каждой.

51
ответ дан 26 November 2019 в 22:57
поделиться

Две альтернативы:

  1. Вы можете вставить данные регистрации в таблицу регистрации, используя автономную транзакцию. Вы можете запросить эту таблицу журналов в другом сеансе SQLPLUS / Toad / sql Developer и т. Д. Вы должны использовать автономную транзакцию, чтобы сделать возможным фиксацию вашего журнала, не мешая обработке транзакции в вашем основном sql-скрипте.

  2. Другой альтернативой является использование конвейерной функции, возвращающей данные вашего журнала. См. Пример здесь: http://berxblog.blogspot.com/2009/01/pipelined-function-vs-dbmsoutput.html Когда вы используете конвейерную функцию, вам не нужно использовать другой SQLPLUS / Toad / sql developer и т.д ... сеанс.

7
ответ дан 26 November 2019 в 22:57
поделиться

буфер DBMS_OUTPUT считывается при вызове процедуры DBMS_OUTPUT.get_line . Если ваше клиентское приложение - SQL * Plus, это означает, что оно будет сброшено только после завершения процедуры.

Вы можете применить метод, описанный в this SO , чтобы записать буфер DBMS_OUTPUT в файл.

3
ответ дан 26 November 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: