SQLPlus 在执行过程后更新文本日志文件

问题描述 投票:0回答:1

我有一个批处理 (.bat) 文件,其中包含以下详细信息,该文件会在下午 2 点通过 Windows 任务计划程序自动打开。

以下是Proc1.bat文件的内容:

@echo off
echo PROC 1 started at = %time% %date%>> C:\Users\username\Desktop\log.txt
sqlplus username/password@db @C:\Users\username\Desktop\procedure1.sql

以下是 procedure1.sql 文件的内容:

Exec schema1.procedure1;
prompt PROC1 Completed

通过批处理文件中的回显,我可以使用开始时间更新日志文件 通过 sql 文件中的提示,我可以在 sqlplus 屏幕上知道该过程已完成 但是,我需要一种方法来将过程完成“之后”的结束时间更新到同一个 log.txt 文件中。

我无权编辑存储过程,我只能调用它。 我只有对 Oracle 模式和表的读取访问权限,无法进行任何更改过程或其他更改。 请帮我解决一个方法,用“Proc1 在 hh:mm 成功执行”、“程序完成后”来更新 log.txt 文件。

我在网上花了很多时间试图找到合适的结果,但找不到任何结果。最后向堆栈溢出专家寻求解决方案!

batch-file stored-procedures logfile
1个回答
0
投票

这是我为获得结果所做的事情:

我将sql文件的内容更改为:

SET PAGESIZE 0
SET FEED OFF
EXEC schema1.procedure1;
SPOOL C:\Users\username\Desktop\log.txt APPEND
SELECT 'PROC 1 COMPLETED AT:', TO_CHAR(SYSTIMESTAMP,'MM/DD/YYYY HH24:MI:SS.FF') FROM DUAL
SPOOL OFF;
EXIT;

这会在 log.txt 文件中添加一个新行,内容如下:

PROC 1 COMPLETED AT: 08/30/2023 13:35:59.480663

因此,.BAT 文件将过程开始时间添加到日志文件中,.SQL 文件将过程完成的“结束时间”添加到日志文件中。

这有助于创建一个“日志文件”,捕获计划运行的所有脚本/批处理文件的开始时间和结束时间,这有助于识别过程是否每天执行。

仅供参考,我已将脚本分配为通过 Windows 中的任务计划程序应用程序作为任务运行。

如果您觉得有帮助,请点赞。

© www.soinside.com 2019 - 2024. All rights reserved.