【问题标题】:How to redirect 'dbms_output.put_line content' to log file from a TimesTen Stored Procedure如何将“dbms_output.put_line 内容”重定向到 TimesTen 存储过程中的日志文件
【发布时间】:2012-09-02 04:56:09
【问题描述】:

请参阅下面的示例 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 日志只会在此处打印。 但我想将此类调试日志收集到日志文件中的其他位置。每当执行程序时,它都应将这些内容附加到文件中。有没有办法做到这一点?

【问题讨论】:

    标签: oracle plsql timesten


    【解决方案1】:

    如果您按照您所说的那样从 ttisql 调用您的过程,您可以使用 spool filepath 和 spool off 来记录屏幕上出现的任何消息。要将新信息附加到已经存在的日志文件中,只需在 filepath

    之后使用 APPEND 选项
    spool c:\logfile.log append
    

    【讨论】:

    • 不,我不打算从 ttisql 调用它。我打算从 c++ 代码触发这个过程。
    • 那么除了@Candie 的回答,看看这个stackoverflow.com/questions/1453538/…
    • 是的,我已经解决了这个问题。但它适用于甲骨文。我的存储过程在 TimesTen 中,而不是在 Oracle 中。
    • 太棒了!!谢谢,TimesTen 从 11.2.2 版本开始提供这种支持。我使用的是旧的。因此我无法使用 UTL_FILE 包。
    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2015-11-30
    • 2017-03-26
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多