我需要为存储的PL / SQL过程生成日志文件或写入日志表。如果我理解正确,则无法在存储过程中使用假脱机。我知道我可以使用UTL_FILE写入日志文件,但是我试图弄清楚如何获取一些我想编写的信息。假脱机处理时,在执行每个语句后都会得到某种结果字符串,例如“成功完成PL / SQL过程”或“选择了5行”。有没有办法获取该输出或类似的输出,以便我可以将它们放在日志中?
不直接。该输出是由SQL * Plus生成的,而不是由数据库中的任何内容生成的。如果要在过程中的每个SQL语句之后生成输出,则必须在过程中放置代码以输出所需的内容。
通过将过程调用放在BEGIN..END带有异常处理程序的块中,可以生成“ PL / SQL过程成功完成” 。如果未调用异常处理程序,请打印出来Successfully completed。如果调用它,请使用a WHEN OTHERS转储所需的任何调试信息。
BEGIN
INVOKE_YOUR_PROCEDURE_HERE;
UTL_FILE.PUT_LINE(fileHandle, 'PL/SQL procedure successfully completed');
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.PUT_LINE(fileHandle, 'Procedure failed: ' || SQLCODE || ' - ' || SQLERRM);
END;
Run Code Online (Sandbox Code Playgroud)
可以在执行SELECT语句后通过打印SQL%ROWCOUNT来完成“选择5行”,如下所示:
UTL_FILE.PUT_LINE(fileHandle, SQL%ROWCOUNT || ' rows affected');
Run Code Online (Sandbox Code Playgroud)
祝你好运。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |