Sql 使用DBMS_作业在Oracle中创建作业

Sql 使用DBMS_作业在Oracle中创建作业,sql,oracle,dbms-job,Sql,Oracle,Dbms Job,我正在尝试创建一个作业,它将在每个圣诞节运行特定的过程。这就是我取得的成绩: declare jobno number; begin dbms_job.submit( jobno, 'BEGIN GiveCoins; END;', to_date('12/25', 'MM/DD'), 'sysdate + ?'); end; / 然而,我似乎找不到一个简单的方法将间

我正在尝试创建一个作业,它将在每个圣诞节运行特定的过程。这就是我取得的成绩:

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25', 'MM/DD'),
                    'sysdate + ?');
end;
/

然而,我似乎找不到一个简单的方法将间隔改为每年一次,我只是对如何进行这项工作感到非常困惑,非常感谢任何帮助

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25/2012', 'MM/DD/YYYY'),
                    'add_months(trunc(sysdate),12)');
end;
/

这将在2012年圣诞节午夜第一次运行作业,此后每12个月运行一次。

您不能将其添加到
所有作业
表中吗?@gdoron:如果您具有sysdba角色,您可能可以,但不应该。您不应该直接修改系统目录。@Allan。谢谢你的提示。(现在我明白了为什么我很久以前试着去做的时候出错了……{两天前})你是如何删除一份工作的?@Allan。不应直接更改所有工作的原因是什么?这会导致什么?@gdoron:你不会改变它,因为它是数据字典的一部分。引用Oracle的话,“更改或操作数据字典表中的数据可能会对数据库的运行产生永久性的不利影响。”最明显的后果是,几乎肯定会取消整个实例获得Oracle支持的资格。除此之外,我不知道会发生什么,也没有特别的动机去发现。