Oracle 如何在pl/sql包中定义dbms_调度程序。创建_作业?

Oracle 如何在pl/sql包中定义dbms_调度程序。创建_作业?,oracle,plsql,plsqldeveloper,dbms-scheduler,plsql-package,Oracle,Plsql,Plsqldeveloper,Dbms Scheduler,Plsql Package,其想法是创建一个计划作业,该作业将运行一个包,该包将删除超过6个月的分区 问题是如何在PL/SQLDeveloper中创建另一个包,其中包含dbms_调度程序作业 非常感谢您的帮助。为什么要在包中添加作业?无论如何,您可以将此添加到您的包中 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'delete_partition', job_type => 'STORED_PROCEDURE

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

问题是如何在PL/SQLDeveloper中创建另一个包,其中包含dbms_调度程序作业


非常感谢您的帮助。

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

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;
/

你为什么要那样做?您将有一个调度作业,该作业调用一个过程,该过程创建一个作业,该作业调用一个。。。等。这是作业,程序已安排,它将每月运行。仅此而已,不是吗?
'28-APR-08 07.00.00 PM Australia/Sydney'
是一个字符串,而不是日期或时间戳。使用
时间戳'2018-04-28 07:00:00澳大利亚/悉尼'
到时间戳。而且
end\u date
应该是
NULL
我假设你不知道作业在某个时间停止了什么。好吧,让我给你一点关于我在这里尝试做什么的上下文。所以,我们的目标是清除20个分区表中早于6个月的日志数据。我现在通过处理一个表开始这项工作,所以我创建了一个PurgePackage,其中包括一个过程,该过程处理删除6个月前分区的for循环。因此,我现在想创建一个计划作业,每天运行PurgePackage。这就是为什么我说我希望这个shceduler单独保存,而不是将它添加到PurgePackage中。希望这有助于您现在了解更多。
 -- 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;
/