我有一个批处理 (.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 文件。
我在网上花了很多时间试图找到合适的结果,但找不到任何结果。最后向堆栈溢出专家寻求解决方案!
这是我为获得结果所做的事情:
我将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 中的任务计划程序应用程序作为任务运行。
如果您觉得有帮助,请点赞。