Как перенаправить содержимое dbms_output.put_line в файл журнала из хранимой процедуры TimesTen

См. образец процедуры Timesten ниже.

CREATE OR REPLACE PROCEDURE test_proc(employee_id IN NUMBER) AS
salary NUMBER;
BEGIN
SELECT emp_sal INTO salary FROM employee where emp_id = employee_id;
DBMS_OUTPUT.PUT_LINE('Employee Id:' || employee_id || ' Annual Income:' || salary*12);
END;
/

Если я вызываю процедуру из интерфейса командной строки (ttisql), журналы dbms_output.put_line печатаются только там. Но я хочу собирать такие журналы отладки в другом месте в файле журнала. Всякий раз, когда процедура выполняется, она должна добавлять это содержимое в файл. Есть ли способ сделать это?


person Dhiraj Neve    schedule 08.09.2012    source источник


Ответы (1)


Если вы вызываете свою процедуру из ttisql, как вы сказали, вы можете использовать путь к файлу буферизации и отключить буферизацию для регистрации любых сообщений, появляющихся на экране. Чтобы добавить новую информацию в уже существующий файл журнала, просто используйте параметр APPEND после filepath.

spool c:\logfile.log append
person Nick Krasnov    schedule 08.09.2012
comment
Нет, я не планирую вызывать ее из ttisql. Я собираюсь запустить эту процедуру из кода C++. - person Dhiraj Neve; 08.09.2012
comment
то в дополнение к ответу @Candie взгляните на этот stackoverflow.com/questions/1453538/ - person Nick Krasnov; 08.09.2012
comment
Да, я уже прошел этот вопрос. Но он отлично работает для Oracle. Моя хранимая процедура находится в TimesTen, а не в Oracle. - person Dhiraj Neve; 08.09.2012
comment
TimesTen также имеет пакет UTL_FILE docs.oracle.com /cd/E21901_01/doc/timesten.1122/e21645/ - person Nick Krasnov; 08.09.2012
comment
Здорово !! Спасибо, TimesTen поддерживает эту функцию начиная с версии 11.2.2. Я использовал более старый. Поэтому я не смог использовать пакет UTL_FILE. - person Dhiraj Neve; 08.09.2012