【问题标题】:how to define a dbms_scheduler.create_job in a pl/sql package? [closed]如何在 pl/sql 包中定义 dbms_scheduler.create_job? [关闭]
【发布时间】:2019-05-19 21:47:33
【问题描述】:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
   job_name           =>  'delete_partition',
   job_type           =>  'STORED_PROCEDURE',
   start_date         =>  '28-APR-08 07.00.00 PM Australia/Sydney',
   repeat_interval    =>  'FREQ=MONTHLY;INTERVAL=1', /* every month */
   end_date           =>  '20-NOV-08 07.00.00 PM Australia/Sydney',
   comments           =>  'Running on the 17th of every month');
END;
/

想法是创建一个计划作业,该作业将运行一个包来删除超过 6 个月的分区。

问题是如何在 PL/SQL Developer 中创建另一个包含 dbms_scheduler 作业的包?

非常感谢任何帮助。

【问题讨论】:

  • 你为什么要这样做?您将有一个计划的作业,该作业调用一个过程,该过程创建一个作业,该作业调用一个过程......等等。这是作业,过程已安排,它将每个月运行。仅此而已,不是吗?
  • '28-APR-08 07.00.00 PM Australia/Sydney' 是一个字符串,而不是 DATETIMESTAMP。使用TIMESTAMP '2018-04-28 07:00:00 Australia/Sydney'TO_TIMESTAMP_TZ 或简单地使用SYSTIMESTAMPend_date 应该是 NULL 我假设你不会在特定时间停止工作。
  • 好的,让我给你更多关于我想在这里做什么的背景信息。所以目标是清除 20 个分区表中超过 6 个月的日志数据。我现在通过处理一个表来开始这项工作,因此我创建了一个 PurgePackage,其中包含一个过程,该过程处理删除 6 个月大的分区的 for 循环。因此,id 现在想创建一个每天运行 PurgePackage 的计划作业。这就是为什么我说我希望这个 shceduler 单独保存而不是添加到 PurgePackage 本身中。希望这可以帮助您现在了解更多。

标签: oracle plsql plsqldeveloper dbms-scheduler plsql-package


【解决方案1】:

为什么要在包中添加工作?无论如何,您可以将其添加到您的包中

 -- Run a job immediately. If use_current_session is TRUE the job is run in the
-- user's current session. If use_current_session is FALSE the job is run in the
-- background by a dedicated job slave.
BEGIN
  DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'delete_partition',
    USE_CURRENT_SESSION => FALSE);
END;
/

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2021-07-21
    • 2014-01-08
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多