【发布时间】:2015-05-21 17:38:37
【问题描述】:
我有一个简单的存储过程,我希望 Oracle 每周执行一次,并将它放在 Oracle 调度程序中。它创建得很好,计划任务似乎执行(没有错误),但我的存储过程没有执行。我在数据库上有管理员权限,我没有收到任何错误。只是没有得到我想要的结果。
以下是工作详情:
创建成功
存储过程很简单
create or replace
PROCEDURE DELETEBOGUSLETTERRECORDS AS
BEGIN
DELETE FROM BOGUSLETTERS;
COMMIT;
END DELETEBOGUSLETTERRECORDS;
该过程在调度程序之外进行了测试,执行良好,指定表中的所有记录都被删除。 但是,相同的程序在预定时没有正确执行。我什至让作业立即运行,但运行后,记录并没有被删除。没有任何错误。
有什么问题?谢谢!
【问题讨论】:
-
检查 *_SCHEDULER_JOB_LOG 和 *_SCHEDULER_JOB_RUN_DETAILS(将 * 替换为 ALL、USER 或 DBA)视图
-
我很惊讶它没有抛出错误。 PL/SQL 块不需要(而且我相信不能拥有)关键字
EXEC。该命令在 SQLPlus 中用于执行块外的过程。您应该拥有的只是BEGIN deletebogusletterrecords; END;。 -
嗯,按照建议检查了日志和详细信息。原来这个任务从来没有运行过?!我现在有点困惑,为什么没有。我让它立即运行,它被忽略了。我也尝试将它安排在特定时间,当时间过去时,什么都没有运行。如何强制计划任务运行?另外,我将按照建议删除 exec 命令。
-
@HepC:你是对的!我删除了命令“exec”,任务实际上成功完成。没有错误,任务只是默默地忽略它......去图!
-
@HelpC 答案是删除关键字 EXEC。如果您将其发布为答案,我会将其标记为答案。感谢您的及时指导。非常感谢!
标签: oracle dbms-scheduler